J'ai une JTable avec un TableModel personnalisé qui étend AbstractTableModel. J'ai aussi utilisé le construit dans la table de tri en appelant:Comment accélérer JTable dans le tri des tables?
table.setAutoCreateRowSorter(true);
Le modèle retour aussi la bonne classe des données pour chaque colonne de l'appel getColumnClass(), qui, de ce que je lis devrait assurer le tri le plus rapide étant terminé.
Alors que cela fonctionne très bien et est en effet un moyen très rapide d'obtenir un tri dans vos JTables, il est exceptionnellement lent lorsque le nombre de lignes atteint plus de 5000 entrées. Ma table de presque 10000 lignes prend maintenant 6-7 secondes pour trier sur un ordinateur assez puissant. Mais si je triais les données moi-même avant de les ajouter au modèle en utilisant l'algorithme de tri des collections, cela se fait en quelques millisecondes! Je soupçonne que le trieur incorporé déclenche beaucoup d'événements inutiles pour chaque "échange" d'éléments se produisant dans l'algorithme de trieur, même si la peinture est arrêtée jusqu'à ce qu'elle soit terminée (le trieur intégré est évidemment utilisé dans l'AWT). thread et donc bloque toute l'interface graphique/repeindre). Je n'ai pas analysé cela en regardant ce qui se passe réellement dans le tri du tableau. Je suis tenté d'abandonner tout le trieur intégré et de simplement détecter les clics d'en-tête de colonne et de trier moi-même le modèle avant de faire un fireTableDataChanged() qui aurait dû être fait par le trieur intégré.
Mais avant de faire cela, est-ce que je néglige quelque chose qui pourrait rendre la trieuse intégrée rapide?
Je pense que je pourrais avoir trouvé une cause au problème oui et vous aviez raison que c'est une grande chance que ce soit mon modèle personnalisé. Comme le modèle de table par défaut n'a pas de filtre intégré, j'ai implémenté le mien et il semble que ce mappage de la ligne visible à la ligne réelle soit exceptionnellement lent. Je pense que je vais devoir reconstruire le modèle pour maintenir deux ensembles de rangées de sorte que je n'ai pas à faire ce mapping. – Johncl