和其他许多人一样,我希望在添加行之后实现我的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();


由于您的模型已更改,但模型更改也应通知表。

07-26 03:52