java – JXTable以同样的方式监听类似表的排序和排序
作者:互联网
我有许多JXTables都有相同的列(但不同的数据).您可以通过单击其中一列的标题对数据进行排序.我现在想要的是,当点击其中一个表的标题时,其他表的排序方式相同.
解决方法:
您可以定义一个引用每个JTable的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)来响应给定的排序器事件:
public void sorterChanged(RowSorterEvent e) {
// The changing flag prevents an infinite loop after responding to the inital
// sort event.
if (!changing) {
changing = true;
RowSorter changedSorter = e.getSource();
List<? extends SortKey> keys = changedSorter.getKeys();
for (RowSorter sorter : sorters) {
if (sorter != changedSorter) {
// Install new sort keys, which will cause the sorter to re-sort.
// The changing flag will prevent the mediator from reacting to this.
sorter.setSortKeys(keys);
}
}
}
}
标签:java,sorting,swing,swingx,jxtable 来源: https://codeday.me/bug/20190627/1301012.html