Выполнение действия после операции RowSort - PullRequest
3 голосов
/ 12 июня 2009

У меня есть JTable и TableRowSorter, которые я хотел бы выполнить операцию после сортировка завершена. Я просматривал сеть, и пока мне не повезло.

Первоначально я думал, что только RowSorterListener справится с задачей, но, к сожалению, он не выполняет операцию после завершения сортировки.

Добавление MouseListener к заголовку JTable может работать, но решение не очень изящное.

У кого-нибудь есть идеи?

Спасибо большое!


Редактировать (из комментария): Следующее добавлено в метод внутри пользовательского класса TableModel, который расширяет AbstractTableModel. Этот метод вызывается всякий раз, когда JTable установлен / указан в пользовательском классе TableModel.

sorter.addRowSorterListener(new RowSorterListener() {
    @Override public void sorterChanged(RowSorterEvent rowsorterevent) {
        rebuildMItems(); // The method which executes
    }
});

1 Ответ

3 голосов
/ 12 июня 2009

Две возможности:

  1. Я вижу, у вас есть пользовательский RowSorter. Не могли бы вы просто добавить вызов к вашей операции в конце метода sort()?

    Другими словами, вы можете добавить это:

    @Override
    public void sort() {
        super.sort();
        doSomethingAfterSortingIsDone();
    }
    

    вашему сортировщику?

  2. Ваш текущий метод (выполняется в RowSorterListener) выполняет операцию дважды: один раз для SORT_ORDER_CHANGED и один раз для SORTED. Можете ли вы проверить тип события и выполнить операцию только в правильное время?

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