JTable 行排序问题

use*_*041 4 java sorting swing jtable

假设我有一个 JTable,其中包含一些数据。调用 table.getValueForCell(row,col) 返回单元格的内容。这正如预期的那样。

现在说我想对我的桌子进行排序。我单击表头(列),它会对表进行排序。如果我使用相同的行和列值调用 table.getValueForCell(row,col) 。现在这里有一个不同的行,因为表已排序。但是,table.getValueForCell(row,col) 返回旧数据。排序时,保存表数据的底层数据结构似乎没有更新。

关于如何解决这个问题的任何想法,或者我可能做错了什么?

cam*_*ckr 5

数据始终按其原始顺序存储在 TableModel 中。您可以使用以下方式访问原始订单:

table.getModel().getValueAt(...);
Run Code Online (Sandbox Code Playgroud)

每当表排序时,只有视图发生变化。当您从表中获取数据时,您只需使用:

table.getValueAt(...);
Run Code Online (Sandbox Code Playgroud)

如果出于某种原因需要在两者之间来回转换,您可以使用任一适当的表方法:

convertRowIndexToModel(...); 
convertRowIndexToView(...); 
Run Code Online (Sandbox Code Playgroud)