3

我有一个带有两列的 JTable 和一个使用与哈希映射一起使用的类的表模型。该地图的元素是表格行。

每次我添加一个新元素时,我都需要选择该元素,而不管任何排序。现在,我尝试使用以下方法:

int lastRow = table.convertRowIndexToView(tableModel.getRowCount() - 1);
table.setRowSelectionInterval(lastRow, lastRow);

问题是,这仅在我以排序方式添加数据时才有效(例如,“A”、“B”、“C”,甚至因为“D”,例如,一旦添加就放在 A 之前) . 有人可以告诉我如何解决这个问题吗?

4

2 回答 2

4

问题很可能出在您的 中TableModel,因为您发布的代码很好。您提到您使用 aHashMap来存储TableModel. a 的问题HashMap是它没有任何排序。向其中添加元素可能会改变您在地图中获取元素的顺序。

最好使用尊重排序的数据结构。

于 2013-01-04T11:23:42.450 回答
2

更好的方法是使用prepareRendered 从 XxxTableModel 突出显示最大行索引

JTable也可以Sorted and Filtered,然后最后添加的行在JTables视图中不可见

取决于ListSelectionMode,但默认情况下你可以做

table.setRowSelectionInterval(lastRow, lastRow);
table.setColumnSelectionInterval(columnMinIndex, columnMaxIndex);

为了获得更好的帮助,请尽快发布一个 SSCCE,简短,可运行,可编译,差不多,JFrame以及JTable in JScrollPane一个新addRow的从swing.Timer

于 2013-01-04T10:43:34.437 回答