Java JTable不';在UI中没有显示?
我想在UI上创建一个示例表。但不管我怎么试,它都没有出现。也许有人能帮我Java JTable不';在UI中没有显示?,java,swing,user-interface,jtable,awt,Java,Swing,User Interface,Jtable,Awt,我想在UI上创建一个示例表。但不管我怎么试,它都没有出现。也许有人能帮我 public void createGUI(){ JFrame myframe = new JFrame("Frame"); JButton firstButton = new JButton("Connect"); myframe.setLayout(null); myframe.setVisible(true); myframe.set
public void createGUI(){
JFrame myframe = new JFrame("Frame");
JButton firstButton = new JButton("Connect");
myframe.setLayout(null);
myframe.setVisible(true);
myframe.setSize(500, 500);
//myframe.add(firstButton);
firstButton.addActionListener(new handler("ConnectButton"));
firstButton.setSize(150, 100);
firstButton.setLocation(100, 100);
String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
JTable table = new JTable(data, columnNames);
table.setVisible(true);
//JScrollPane scrollPane = new JScrollPane(table);
//scrollPane.setVisible(true);
table.setFillsViewportHeight(true);
myframe.add(table);
}
问题是,在此行中将布局设置为
null
时:
myframe.setLayout(null)代码>
只要拆下这条线,它就会很好地工作。因为布局设置为null时无法显示窗口。因此,一旦删除该行,将使用默认布局
以下是有关布局管理器的更多信息,您可能需要阅读:
我删除的第二个内容是这行:
table.setFillsViewportHeight(true);
您应该使用myframe.pack()相反,它会将所有组件打包到框架上
因此,我最终得出结论:
public static void createGUI() {
JFrame myframe = new JFrame("Frame");
JButton firstButton = new JButton("Connect");
myframe.setSize(500, 500);
String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
JTable table = new JTable(data, columnNames);
table.setVisible(true);
myframe.add(table);
myframe.pack(); // added this
myframe.setVisible(true); // and moved this from top
}
最终结果如下所示:
您没有使用布局管理器[myframe.setLayout(null)],因此您必须自己处理位置和大小
尝试添加:
table.setLocation(1, 1);
table.setSize(200,200);
它会工作。这一行myframe.setVisible(true)
也应该是最后一个,就在pack()
之后。没有解决Kiki:/问题不在于窗口不会出现,而在于表格。我将布局设置为“null”,以便可以将元素放置在我想要的位置,这就是平面图。但是我会告诉我更多关于layoutmanager的信息:)顺便问一下,你发布的代码在你的程序中有效吗?出于某种原因,(@Dyrdek我更新了代码,带表的框架显示得很好。好的,谢谢Kiki;)我会尝试一下,并在我的项目中查找错误。我用你的确切代码Kiki创建了一个新项目。而且它工作(并不令人惊讶):)所以我必须找出我原来的项目出了什么问题。