如何“取消排序”JTable?

时间:2012-05-16 23:03:01

标签: java swing sorting jtable

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

4 个答案:

答案 0 :(得分:5)

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

table.getRowSorter().setSortKeys(null);

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

答案 1 :(得分:2)

方式是挂起原始状态,并在发出“unsort”事件时将其恢复。

因此,您需要维护可以还原的List或数组中的原始行顺序。您还可以保留对原始DefaultTableModel的副本的引用。

答案 2 :(得分:1)

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

如果清空排序键不行,这应该有效。

答案 3 :(得分:0)

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

this.mainTable.setAutoCreateRowSorter(false);
this.tableModel.removeAllElements();
this.mainTable.setAutoCreateRowSorter(true);
this.mainTable.repaint();
this.mainScrollPane.doLayout();