Уточнение выше - обновить выбор, используя объект модели выбора, а не объект таблицы. Когда вы обновляете выбор с помощью таблицы, каждое обновление запускает событие изменения выбора, и для обновления таблицы всего несколькими сотнями строк требуется несколько секунд.
Самый быстрый способ для таблиц с несколькими сотнями строк - это
/**
* Invert selection in a JTable.
*
* @param table
*/
public static void invertSelection(JTable table) {
ListSelectionModel mdl = table.getSelectionModel();
int[] selected = table.getSelectedRows();
mdl.setValueIsAdjusting(true);
mdl.setSelectionInterval(0, table.getRowCount() - 1);
for (int i : selected) {
mdl.removeSelectionInterval(i, i);
}
mdl.setValueIsAdjusting(false);
}