4

我为 a 创建了TableRowSorter一个JTable,并且能够正确地对表格进行排序。但是有没有办法让表格在我排序之前恢复到原来的状态?我尝试单击表格标题,但似乎它仅按升序或降序对表格进行排序,并且不会将表格返回到排序之前的原始状态。是否可以取消对表格进行排序并将其恢复到原始状态?谢谢!

4

4 回答 4

5

sortKeys列表表示视图应该是未排序的。尝试以下操作以恢复原始行顺序:

table.getRowSorter().setSortKeys(null);

在RowSorter规范中阅读更多内容。

于 2012-05-16T23:18:02.297 回答
2

唯一的方法是在触发“unsort”事件时保持原始状态并恢复它。

因此,您需要在列表或数组中维护可以恢复的原始行顺序。您还可以保留对原始DefaultTableModel.

于 2012-05-16T23:10:54.903 回答
1

table.setRowSorter(new TableRowSorter<>(table.getModel()));

如果没有清空排序键,这应该可以工作。

于 2014-05-13T21:08:21.907 回答
0

我遇到了同样的问题,在排序并更改为空表后,getColumClass从我的模型中抛出了NullPointer异常。我通过在清空我的桌子并再次启用分拣机之前禁用自动分拣机来解决这个问题。

this.mainTable.setAutoCreateRowSorter(false);
this.tableModel.removeAllElements();
this.mainTable.setAutoCreateRowSorter(true);
this.mainTable.repaint();
this.mainScrollPane.doLayout();
于 2017-11-05T14:02:48.357 回答