和其他许多人一样,我希望在添加行之后实现我的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 Model显示模型已刷新(行数与以前的变体有所不同),但该表仍未出现。我试图插入resultsTable.repaint(),但它也无济于事。
我发现UDP(NB),问题集中在此滚动面板中。
如果我将表直接添加到大面板中,则会刷新它(但是我无法看到所有结果,因为无法向下滚动)
this.add(resultsTable, BorderLayout.CENTER);
如果使用滚动条,则不会显示任何内容。你知道为什么吗?
最佳答案
将此添加到您的代码,
resultsTable.revalidate();
由于您的模型已更改,但模型更改也应通知表。