对于我的程序来说,分配给变量的行号与其位置一致是很重要的,但是在排序后这会搞砸。使用DefaultTableModel,这是我用来排序的:
int rownumber = Table.getRowCount();
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(Table.getModel());
Table.setRowSorter(sorter);
List<RowSorter.SortKey> sortKeys = new ArrayList<>(rownumber);
sortKeys.add(new RowSorter.SortKey(1, SortOrder.ASCENDING));
sorter.setSortKeys(sortKeys);
在按下JButton之后完成排序并在JTable上按预期工作,但问题是实际上,第一个条目将始终位于(1,1)位置,因为我的JTable有两列。例如,如果我的表看起来像这样:
|----|----|
|Col1|Col2|
|----|----|
| 1 | 2 |
|----|----|
| 3 | 4 |
|----|----|
即使顶行具有值(1,2),从model.getValueAt(0,1)
读取也会返回值4,因为这是第一行放入的行。我希望这很清楚;提前感谢您的帮助。
原来使用model.getValueAt()
是问题所在。切换到简单的Table.getValueAt()
解决了这个问题。