java - 如何知道 JTable 何时已排序

标签 java swing jtable

在表上显示新的行顺序后,我需要知道 JTable 何时已排序。

我尝试过:

 getModel().addTableModelListener(new TableModelListener() {        
        @Override
        public void tableChanged(TableModelEvent e) {
            System.out.println("change");               
        }
    });  

但是排序后似乎没有调用方法tableChanged(TableModelEvent e)

最佳答案

JTable 中的排序和相关事件由 RowSorter 处理。可以使用 JTable.setRowSorter 设置它们.

RowSorter 允许您通过使用 RowSorter.addRowSorterListener 订阅监听器来监听排序事件。 .

该监听器的接口(interface)为 RowSorterListener ,监听器方法接收 RowSorterEvent 的实例。当 Type本次 Activity 的信息是 Sorted ,这表明:

[...] the contents have been newly sorted or transformed in some way.

<小时/>

为了您的理解:传统的 JTable(即遵循规范的实现)不会对模型进行排序。相反,模型的索引数组会被排序。这对于遵循模型/ View 范例的 UI 元素来说是典型的。

关于java - 如何知道 JTable 何时已排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56392944/

相关文章:

Java 使用的内存多于分配的内存

java - java 日期格式解析字符串

java - JTable 删除行

java - JTable:如何在运行时选择列

java - StackOverflowError 由 TableModelListener 引起

java - 通过复选框添加/删除 ArrayList<String> 中的字符串

java - 如何在读/写中拆分 tex 文件中的一行?

java - 对表进行排序会破坏 TableRowListener?

java - 用户提供字符串后将 JTextField 中的文本分配给文件

java - 处理多个窗口中的事件