3

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

最初我认为只是 aRowSorterListener可以解决问题,但不幸的是它在排序完成后不执行操作。

MouseListener在标题中添加 aJTable可能会起作用,但解决方案并不是非常优雅。

有没有人有任何想法?

非常感谢!


编辑(来自评论):以下内容被添加到TableModel扩展自定义类中的方法中AbstractTableModel。只要在自定义类JTable中设置/指定,就会调用此方法。TableModel

sorter.addRowSorterListener(new RowSorterListener() {
    @Override public void sorterChanged(RowSorterEvent rowsorterevent) {
        rebuildMItems(); // The method which executes
    }
});
4

1 回答 1

3

两种可能:

  1. 我看你有一个习惯RowSorter。你不能简单地在方法的末尾添加一个对你的操作的调用sort()吗?

    换句话说,你可以添加这个:

    @Override
    public void sort() {
        super.sort();
        doSomethingAfterSortingIsDone();
    }
    

    到你的分拣机?

  2. 您当前的方法(在 a 中RowSorterListener执行)执行两次操作:一次 forSORT_ORDER_CHANGED和一次 for SORTED。您可以检查事件的类型并仅在正确的时间执行操作吗?

于 2009-06-12T15:53:58.023 回答