【发布时间】:2012-05-24 13:40:36
【问题描述】:
我为JTable 创建了一个TableRowSorter,并且能够正确地对表格进行排序。但是有没有办法让表格在我排序之前恢复到原来的状态?我尝试单击表格标题,但似乎它仅按升序或降序对表格进行排序,并且不会将表格返回到排序之前的原始状态。是否可以取消排序表格并将其恢复到原始状态?谢谢!
【问题讨论】:
我为JTable 创建了一个TableRowSorter,并且能够正确地对表格进行排序。但是有没有办法让表格在我排序之前恢复到原来的状态?我尝试单击表格标题,但似乎它仅按升序或降序对表格进行排序,并且不会将表格返回到排序之前的原始状态。是否可以取消排序表格并将其恢复到原始状态?谢谢!
【问题讨论】:
空的sortKeys 列表表示视图应该是未排序的。尝试以下方法来恢复原始行顺序:
table.getRowSorter().setSortKeys(null);
在RowSorter 规范中了解更多信息。
【讨论】:
唯一的方法是在触发“unsort”事件时保持原始状态并恢复它。
因此,您需要在列表或数组中保持可以恢复的原始行顺序。您还可以保留对原始 DefaultTableModel 副本的引用。
【讨论】:
table.setRowSorter(new TableRowSorter(table.getModel()));
如果没有清空排序键,这应该可以工作。
【讨论】:
我遇到了同样的问题,在排序并更改为空表后,getColumClass 从我的模型中抛出了 NullPointer 异常。 我通过在清空我的桌子并再次启用排序器之前禁用自动排序器来解决这个问题。
this.mainTable.setAutoCreateRowSorter(false);
this.tableModel.removeAllElements();
this.mainTable.setAutoCreateRowSorter(true);
this.mainTable.repaint();
this.mainScrollPane.doLayout();
【讨论】: