Java-未显示带有JTable的JScrollPane [英] Java - JScrollPane with JTable not shown
本文介绍了Java-未显示带有JTable的JScrollPane的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个JPanel,在其中添加了JScrollPane(请参见下面的类).我添加了一个JTextField来验证一切正常(而不是JScrollPane),并且该文本字段已添加到面板中.当我尝试添加JScrollPane时,未显示任何内容(白色背景).我该如何解决?
I have a JPanel where I add a JScrollPane (see class below). I added a JTextField to verify that everything works (instead of the JScrollPane) and the text field was added to the Panel. When I try to add my JScrollPane nothing (white background) is shown. How can I fix that?
protected JPanel createContentPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
final String[] columnNames = { "Test1", "Test2", "Test3" };
final String[][] data = {
{ "foo1", "foo2", "foo3" },
{ "bar1", "bar2", "bar3" },
{ "bar1", "bar2", "bar3" },
{ "bar1", "bar2", "bar3" },
{ "bar1", "bar2", "bar3" },
{ "bar1", "bar2", "bar3" },
{ "bar1", "bar2", "bar3" },
{ "bar1", "bar2", "bar3" }
};
ScrollableTable scrollableTablePane = new ScrollableTable(data, columnNames);
panel.add(scrollableTablePane, BorderLayout.CENTER);
return panel;
}
public class ScrollableTable extends JScrollPane {
public ScrollableTable(String[][] aData, String[] aColumnNames) {
super();
TableModel model = getTableModel(aData, aColumnNames);
JTable overviewTable = new JTable(model);
overviewTable.setGridColor(new Color(240, 240, 240));
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
overviewTable.setRowSorter(sorter);
this.add(overviewTable);
}
private TableModel getTableModel(String[][] aData, String[] aColumnNames) {
TableModel model = new DefaultTableModel(aData, aColumnNames) {
public Class<?> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
};
return model;
}
}
推荐答案
To set the displayed component of a JScrollPane, use JScrollPane#setViewportView(Component) rather than add(Component).
public ScrollableTable(String[][] aData, String[] aColumnNames) {
super();
TableModel model = getTableModel(aData, aColumnNames);
JTable overviewTable = new JTable(model);
overviewTable.setGridColor(new Color(240, 240, 240));
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
overviewTable.setRowSorter(sorter);
this.setViewportView(overviewTable);
}
这篇关于Java-未显示带有JTable的JScrollPane的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文