Frage

Ich verwende derzeit die folgende Methode auf meinem JTable, um eine automatische Sortierung in den Spalten zu erhalten

table.setAutoCreateRowSorter(true);

Dies ermöglicht mir derzeit, auf jeden Header zu klicken, und die entsprechende Spalte sortiert für alles mit Buchstaben. Es ist durcheinander, wenn es versucht, meine Spalten mit Zahlen zu sortieren. Es scheint jede Ziffer gleichzeitig zu sortieren, anstatt nach der tatsächlichen Zahl zu sortieren. Zum Beispiel wird es sagen, dass 8 größer als 100 ist, da 8 größer als 1 ist. Gibt es eine Möglichkeit, dieses Verhalten überschreiben zu können?

War es hilfreich?

Lösung

Es macht es vermasselt, wenn es versucht, meine Spalten mit Ganzzahlen zu sortieren

Vielleicht weil:

  1. Sie speichern die Zahlen als Saiten oder
  2. Sie speichern die Daten als ganzzahliges Objekt, aber Sie haben die nicht überschrieben getColumnClass() Methode Ihres Tablemodells zur Rückkehr Integer.class für diese Spalte. Der richtige Komparator wird nur verwendet, wenn Ihre Spaltenklasse korrekt ist.

Siehe den Abschnitt aus dem Swing -Tutorial auf Konzepte: Renderer und Redakteure Weitere Informationen und ein Beispiel dafür, wie Sie die Methode getColumnClass () überschreiben können.

Andere Tipps

Sie müssen wahrscheinlich einen Zeilensortierer mit dem spezifischen Komparator festlegen:

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

Hier kann mehr über den Komparator und mögliche Probleme damit gefunden werden. @Camickr ist jedoch auch Recht, dass, wenn die Spaltenklasse korrekt eingestellt ist, für Ganzzahl normalerweise nicht erforderlich sein sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top