围绕堆栈交换我无法找到一个好的答案。我见过的类似问题中的大多数代码看起来都很庞大而且容易出错;我不知道我是否犯了同样的错误。
我只有两个类(和一个接口),我的问题是我的JTable是空白的:
这是我的代码:
public class Launcher {
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
IViewManager.Util.getInstance();
}
});
}
}
public class ViewManager implements IViewManager {
JFrame frame = null;
JTabbedPane myListTabs = null;
ComicsListPane myComicsListPane = null;
public ViewManager(){
//Create and set up the window.
frame = new JFrame("My List Agregator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Add the Tabbed pane for lists.
myListTabs = new JTabbedPane();
myComicsListPane = new ComicsListPane();
myListTabs.add(myComicsListPane);
myListTabs.setTitleAt(myListTabs.getTabCount()-1, "title");
frame.getContentPane().add(myListTabs);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
public class ComicsListPane extends JPanel {
/**
*
*/
private static final long serialVersionUID = -5207104867199042105L;
JTable myComicsTable = null;
public ComicsListPane() {
//Create the column names and data
String[] columnNames = {"Comic Title",
"Volume",
"Edition",
"Purchased"};
Object[][] data = {
{"The Amazing Spider-man", new Integer(3),
new Integer(679), new Boolean(false)},
{"The Amazing Spider-man", new Integer(3),
new Integer(680), new Boolean(false)}
};
//Create the table
myComicsTable = new JTable(data, columnNames);
myComicsTable.setPreferredScrollableViewportSize(new Dimension(750, 110));
myComicsTable.setFillsViewportHeight(true);
myComicsTable.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(myComicsTable);
scrollPane.add(myComicsTable);
scrollPane.setPreferredSize(new Dimension(450, 110));
this.add(scrollPane, BorderLayout.CENTER);
}
}
我无法看到我出错的地方,大多数时候我已经复制了Java Doc Tutorials。
有人可以帮助指出错误,给java新手吗?
答案 0 :(得分:5)
您创建JScrollPane
时会出现问题。
JScrollPane scrollPane = new JScrollPane(myComicsTable);
scrollPane.add(myComicsTable);
此处不需要第二行 - 您已经使用JScrollPane
构建了JTable
,因此无需将其添加到JScrollPane
。确实 - 这是使用add()
中的Container
方法。如果没有更详细地查看javadocs / source,我究不清楚它为什么会导致你所看到的行为。
顺便说一句,当您使用GUI(实际上,通常)时,最好将代码缩小到最小的块。即可以显示创建JTable
的方法吗?然后,将其包装在JScrollPane
中的方法会按照您的意愿显示吗?等等。
答案 1 :(得分:2)
评论此行:
scrollPane.add(myComicsTable);
你应该看到表格数据。要滚动表格,请使用表格new JScrollPane(myComicsTable);
初始化滚动区域。这应该足以启用滚动。有关滚动的详细信息,请参阅How to Use Scroll Panes。
答案 2 :(得分:1)
尝试评论此行:
scrollPane.add(myComicsTable);