Question

J'utilise actuellement la méthode suivante sur mon JTable pour obtenir un tri automatique sur les colonnes

table.setAutoCreateRowSorter(true);

Cela me permet actuellement de cliquer sur chaque en-tête et la colonne correspondante trie pour tout avec des lettres. Il gâche quand il essaie de trier mes colonnes qui ont des entiers. Il semble que ce soit le tri à chaque chiffre à la fois au lieu de trier par le numéro réel. Par exemple, il dira que 8 est supérieur à 100 puisque 8 est supérieur à 1. y a-t-il un moyen de remplacer ce comportement?

Était-ce utile?

La solution

Il gâche quand il essaie de trier mes colonnes qui ont des entiers

Probablement parce que:

  1. Vous stockez les chiffres comme des cordes, ou
  2. Vous stockez les données en tant qu'objet entier mais vous n'avez pas remplacé le getColumnClass() Méthode de votre TableModel à retourner Integer.class pour cette colonne. Le comparateur approprié ne sera utilisé que lorsque votre classe de colonne est correcte.

Voir la section du tutoriel de swing sur Concepts: Rendeurs et éditeurs Pour plus d'informations et un exemple de la façon dont vous pourriez remplacer la méthode getColumnClass ().

Autres conseils

Vous devez probablement régler un trieur de ligne avec le comparateur spécifique:

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

Ici peut être trouvé davantage sur le comparateur et les problèmes possibles avec. Mais, @Camickr a également raison que si la classe de colonne est définie correctement, car entier ne doit pas normalement être nécessaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top