Tri de plusieurs colonnes dans JTable
Question
Je sais que JTable
peut trier sur une seule colonne. Mais est-il possible d'autoriser le tri en plusieurs colonnes ou dois-je écrire le code moi-même?
La solution
Vous pouvez trier sur plusieurs colonnes en spécifiant plusieurs clés de tri lorsque vous appelez setSortKeys
dans RowSorter
que vous utilisez.
Autres conseils
Recherchez JXTable . JXTable est une extension de JTable qui prend en charge le tri multi-colonnes, ainsi que d'autres fonctions que JTable ne fournit pas. Il est disponible gratuitement auprès de JDNC / SwingLabs.
Vous devriez pouvoir définir le TableRowSorter et le comparateur qui lui sont associés. Exemple:
TableModel myModel = createMyTableModel();
JTable table = new JTable(myModel);
TableRowSorter t = new TableRowSorter(myModel);
t.setComparator(column that the comparator works against, Comparator<?> comparator);
table.setRowSorter(new TableRowSorter(myModel));
ETable de la collection Netbeans.
Il fait partie de org-netbeans-swing-outline.jar
Une recherche google pour la mettre en place.
ETable est principalement une base pour Outline (une TreeTable), mais il possède un ordre multi-colonnes intégré ainsi que de nombreuses autres fonctionnalités intéressantes.
"Je sais que Jtable peut trier sur une seule colonne. Mais est-il possible d'autoriser le tri de plusieurs colonnes ou dois-je écrire le code moi-même? "
Le tri et le filtrage des tables sont gérés par un objet de tri. Le moyen le plus simple de fournir un objet de tri consiste à définir la propriété liée autoCreateRowSorter sur true;
JTable table = new JTable();
table.setAutoCreateRowSorter(true);
Cette action définit un trieur de lignes qui est une instance de javax.swing.table.TableRowSorter.