Способ состоит в том, чтобы прослушать изменения сортировщика таблицы и установить одинаковые значения для sortKeys второй таблицы:
RowSorterListener l = new RowSorterListener() {
@Override
public void sorterChanged(RowSorterEvent e) {
if (RowSorterEvent.Type.SORT_ORDER_CHANGED == e.getType()) {
RowSorter sorter = e.getSource();
otherTable.getRowSorter().setSortKeys(sorter.getSortKeys());
}
}
};
table.getRowSorter().addRowSorterListener(l);
Если вам нужно сохранить синхронизацию в обоих направлениях, зарегистрируйте прослушиватель в обоих случаях и добавьте логику, чтобы ничего не делать, когда изменение сортировки было инициировано слушателем.
Редактировать
после того, как написал почти один и тот же комментарий дважды (к ответам на предложения о сортировке модели), решил добавить его сюда
- технически, сортировка может быть решена как ответственность модели или области просмотра. Есть (сильно обсуждаемые в прошлом) плюсы и минусы в любом случае. После этого придерживайтесь этого решения везде в пользовательском интерфейсе
- Хранение отображения индекса между моделью и системой координат представления - это то, где проблемы скрываются в любом случае
- Swing / X решил считать это представлением ответственности, потому что любая пользовательская сортировка / синхронизация на основе модели - это борьба с системой