Вы можете определить класс-посредник, который ссылается на каждый 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);
}
}
}
}