Как узнать, когда JTable был отсортирован - PullRequest
0 голосов
/ 31 мая 2019

Мне нужно знать, когда JTable был отсортирован, после того, как новый порядок строк показан в таблице.

Я пробовал с:

 getModel().addTableModelListener(new TableModelListener() {        
        @Override
        public void tableChanged(TableModelEvent e) {
            System.out.println("change");               
        }
    });  

Но метод tableChanged(TableModelEvent e), похоже, не вызывается после сортировки.

1 Ответ

2 голосов
/ 31 мая 2019

Сортировка и связанные события в JTable обрабатываются RowSorter .Их можно установить с помощью JTable.setRowSorter .

. RowSorter позволяет прослушивать события сортировки, подписав слушателя с помощью RowSorter.addRowSorterListener .

Этот слушатель имеет интерфейс RowSorterListener , метод слушателя получает экземпляр RowSorterEvent .Когда Тип этого события равен Сортировка , это означает, что:

[...] содержимое было недавно отсортировано или преобразовано каким-либо образом.


Для вашего понимания: традиционный JTable (то есть реализация, которая следует спецификации) не будет сортировать модель.Вместо этого сортируется массив индексов модели.Это типично для элементов пользовательского интерфейса, которые следуют парадигме Модель / Представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...