Un raffinement ci-dessus est de mettre à jour la sélection en utilisant l'objet modèle de sélection, pas objet de table. Lorsque vous mettez à jour la sélection via la table, chaque mise à jour déclenche un événement de modification de sélection et la mise à jour d'une table avec quelques centaines de lignes prend quelques secondes.
Le moyen le plus rapide pour les tables avec plus de quelques centaines de lignes est ce
/**
* 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);
}
Ajoutez votre solution en réponse à voter en: D –