gpt4 book ai didi

java - 如何刷新 JScrollPane 上的 JTable

转载 作者:行者123 更新时间:2023-12-01 12:59:41 25 4
gpt4 key购买 nike

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

如果我使用滚动条,则不会显示任何内容。你知道为什么吗?

最佳答案

只需重新创建模型并将其设置到您的表中即可。

foundR.clear();
foundR.addAll( ...);//<- so the foundR ArrayList is refreshed
AbstractTableModel resultsModel = new FoundResultTableModel(foundR);
resultsTable.setModel(resultsModel);

关于java - 如何刷新 JScrollPane 上的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com