在表上显示新的行顺序之后,我需要知道何时对JTable进行排序。
我尝试过:
getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
System.out.println("change");
}
});
但是排序后似乎没有调用方法tableChanged(TableModelEvent e)
。
答案 0 :(得分:1)
JTable中的排序和相关事件由RowSorter处理。可以使用JTable.setRowSorter进行设置。
RowSorter允许您通过使用RowSorter.addRowSorterListener订阅侦听器来侦听排序事件。
该侦听器的接口为RowSorterListener,该侦听器方法接收RowSorterEvent的实例。当此事件的Type为Sorted时,表明:
[...]内容已经过重新排序或以某种方式转换。
为了您的理解:传统的JTable(即遵循规范的实现)不会对模型进行排序。相反,将对模型的索引数组进行排序。对于遵循Model / View范式的UI元素来说,这是典型的情况。