我有一个JTable
和一个TableRowSorter
,我想在排序完成后 执行操作。我一直在浏览网页,但到目前为止我运气不佳。
最初我认为只需要一个 RowSorterListener
就可以解决问题,但不幸的是它不会在排序完成后执行操作。
将 MouseListener
添加到 JTable
header 中可以工作,但解决方案并不是非常优雅。
有没有人有什么想法?
非常感谢!
编辑(来自评论):将以下内容添加到扩展AbstractTableModel
的自定义TableModel
类中的方法中。只要在自定义 TableModel
类中设置/指定了 JTable
,就会调用此方法。
sorter.addRowSorterListener(new RowSorterListener() {
@Override public void sorterChanged(RowSorterEvent rowsorterevent) {
rebuildMItems(); // The method which executes
}
});
最佳答案
两种可能性:
我看到您有一个自定义
RowSorter
。您不能简单地在sort()
方法的末尾添加对您的操作的调用吗?换句话说,你能不能加上这个:
@Override public void sort() { super.sort(); doSomethingAfterSortingIsDone(); }
到你的分拣机?
您当前的方法(在
RowSorterListener
中执行)执行两次操作:一次针对SORT_ORDER_CHANGED
,一次针对SORTED
。你能查一下 Activity 的type吗?并且只在正确的时间执行操作?
关于java - 在 RowSort 操作之后执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987252/