【发布时间】:2014-05-12 09:35:29
【问题描述】:
与许多其他人一样,我希望在添加行后实现我的 JTable。 在这里你可以看到我的代码片段。
ArrayList<> foundR = new ArrayList<FoundResult>();
JTable resultsTable = new JTable();
AbstractTableModel resultsModel = new FoundResultTableModel(foundR);//<- model which contains FoundResults as rows
JScrollPane scroller = new JScrollPane();
resultsTable.setModel(resultsModel);
scroller.add(resultsTable);
this.add(scroller, BorderLayout.CENTER);// a big panel which contains scroller and other components
然后添加一个使用以下方法的 ActionListener:
foundR.clear();
foundR.addAll( ...);//<- so the foundR ArrayList is refreshed
resultsModel.fireTableDataChanged();
resultsModel.fireTableStructureChanged();
rowCount of results Model 显示模型已刷新(行数与之前的变体不同),但表格仍未出现。我试图插入 resultsTable.repaint() 但它也没有帮助。
UDP(NB) 我发现,问题集中在这个滚动面板上。
如果我将表格直接添加到大面板,它会被刷新(但我看不到所有结果,因为我无法向下滚动)
this.add(resultsTable, BorderLayout.CENTER);
如果我使用滚动条,则不会显示任何内容。你知道为什么吗?
【问题讨论】:
-
显示
FoundResultTableModel的代码。 -
为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。
-
如果在程序中滚动到 JTable 的底部,然后添加行会怎样?
标签: java swing jtable jscrollpane abstracttablemodel