Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在行排序操作之后执行操作_Java_Swing_Jtable - Fatal编程技术网

Java 在行排序操作之后执行操作

Java 在行排序操作之后执行操作,java,swing,jtable,Java,Swing,Jtable,我有一个JTable和一个TableRowSorter,我想在排序完成后执行一个操作。我一直在上网,到目前为止运气不太好 起初我以为只要一个RowSorterListener就可以了,但不幸的是,它在排序完成后没有执行该操作 在JTable标题中添加mouseStener可能会起作用,但解决方案并不十分优雅 有人有什么想法吗 非常感谢 Edit(来自comment):在扩展AbstractTableModel的自定义TableModel类中的方法中添加了以下内容。每当在自定义TableMode

我有一个
JTable
和一个
TableRowSorter
,我想在排序完成后执行一个操作。我一直在上网,到目前为止运气不太好


起初我以为只要一个
RowSorterListener
就可以了,但不幸的是,它在排序完成后没有执行该操作

JTable
标题中添加
mouseStener
可能会起作用,但解决方案并不十分优雅

有人有什么想法吗

非常感谢


Edit(来自comment):在扩展
AbstractTableModel
的自定义
TableModel
类中的方法中添加了以下内容。每当在自定义
TableModel
类中设置/指定
JTable
时,就会调用此方法

sorter.addRowSorterListener(new RowSorterListener() {
    @Override public void sorterChanged(RowSorterEvent rowsorterevent) {
        rebuildMItems(); // The method which executes
    }
});
两种可能性:

  • 我看到您有一个定制的
    行分拣机
    。您不能简单地在
    sort()
    方法的末尾添加对操作的调用吗

    换句话说,您可以添加以下内容:

    @Override
    public void sort() {
        super.sort();
        doSomethingAfterSortingIsDone();
    }
    
    到你的分拣机


  • 您当前的方法(在
    RowSorterListener
    中执行此操作)执行两次操作:一次用于
    SORT\u ORDER\u CHANGED
    ,一次用于
    SORTED
    。您能否检查事件并仅在正确的时间执行操作


  • RowSorterListener
    应该可以工作。您能否演示如何添加RowSorterListener以及您的
    sorterChanged
    方法的实现?Akf,感谢您的帮助。在扩展了
    AbstractTableModel
    的自定义
    TableModel
    类中的方法中添加了以下内容。每当在自定义
    TableModel
    类中设置/指定
    JTable
    时,就会调用此方法。addRowSorterListener(新的RowSorterListener(){@Override public void sorterChanged(RowSorterEvent RowSorterEvent){RebuildItems();//执行的方法}});不过没什么太令人兴奋的:大便,看起来格式有问题。你能告诉我我对堆栈溢出还不熟悉吗?:)您不能在评论中格式化任何内容。请您将其添加到问题中,好吗?您是否建议RebuildItems()确实会被调用,但调用得太早?太好了。多谢各位!