我有许多JXTable都有相同的列(但数据不同)。您可以通过单击其中一列的标题对数据进行排序。我现在想要的是,当点击其中一个表的标题时,其他表的排序方式相同。
答案 0 :(得分:4)
您可以定义一个引用每个JTable
的{{1}}的中介类,并将自己注册为每个分拣机的RowSorter
。当给定的分拣机发生变化时,您可以使用RowSorterListener
检索其当前的排序键列表,并使用getSortKets()
将它们传递给其他每个分拣机。
示例强>
首先我们定义中介类:
setSortKeys(List<? extends SortKey>)
现在我们实施public class SortMediator implements RowSorterListener {
private final List<RowSorter> sorters;
private boolean changing;
public void addRowSorter(RowSorter sorter) {
this.sorters.add(sorter);
}
public void sorterChanged(RowSorterEvent e) {
...
}
}
来响应给定的分拣机事件:
sorterChanged(RowSorterEvent e)
答案 1 :(得分:0)
我不这样做,因为它控制了用户:他/她可能想要对表进行不同的排序,以比较不同的数据。
而是在“视图”菜单中添加“排序依据”选项。更改此选项将对所有表进行排序,但除非用户想要对特定表进行排序,否则请将它们单独保留。