2015-08-08 2 views
0

Итак, у меня есть JTable, заполненный множеством элементов и TableRowSorter для сортировки строк. Эта таблица имеет режим «вытаскивания», который проверяет любые изменения из внешнего источника и при необходимости обновляет TableModel.Как отключить сортировку JTable при изменении TableModel?

Проблема в том, что сортировка заставляет таблицу мерцать, когда таблица обновляет ее содержимое. Как я могу сделать это так, чтобы JTable рисовал на экране, пока 1) содержимое не было обновлено. 2) эти данные были отсортированы?

+1

Можете ли вы предоставить примерный пример? Как вы обновляете таблицу? Вы заменяете модель или обновляете ее содержимое? Какие события вы вызываете? – MadProgrammer

+1

Где твоя 'SSCCE'? Вас попросили прежде чем опубликовать SSCCE с вашим вопросом, чтобы вы поняли, что вы делаете. – camickr

ответ

1

Я думаю (это то, что происходит, если вы не предоставляете SSCCE), у вас есть модель таблицы на основе DefaultTableModel и добавление нового содержимого в какой-то цикл, используя addRow. Каждый вызов addRow в свою очередь вызывает fireTableRowsInserted. Это улавливается пользовательским интерфейсом, и таблица обновляется.

Вам нужно избегать обхода события до тех пор, пока все строки не будут вставлены. Измените метод insertRow из модели и удалите событие пожара. Вы можете запустить событие после того, как все строки будут вставлены.

Смежные вопросы