Sortieren von Zeilen und Spalten in JTable
Wenn Sie auf die Kopfzeile der Spalte auf meiner JTable, Ihr sortiert die Zeilen alphabetisch. Dies funktioniert für alle meine Spalten bis auf eine Ausnahme. In diese Spalte die Werte sind alle Strings, sondern zahlen enthalten. Ich muss Sie sortiert werden basierend auf Ihren dezimal-Wert und nicht als string-Wert.
Jede Idee, wie dies zu erreichen?
Von "zahlen enthalten" meinst du einen string wie "50 äpfel" oder nur eine Zahl wie "50" mit der string-Typ?
Beide Antworten richtig Lesen
Beide Antworten richtig Lesen
getColumnClass()
. Siehe auch Class-Literale, die als Runtime-Type-Token.InformationsquelleAutor user489041 | 2011-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
bitte Lesen tutorial über JTable, enthält TableRowSorter Beispiel,
Ihre Antwort diese codes Linien, legen Sie die Spalte Klasse richtig
InformationsquelleAutor mKorbel
Die Standard-Zeile-Sortierer wird Sortieren, basierend auf der Spalte Klasse. Wenn die Spalte Klasse Object ist (die Standardeinstellung), dann verwendet es die
toString()
Methode. Wenn Sie können, was Sie in die Spalte, um etwas implementiert, dass das Vergleichbare Schnittstelle (z.B. Integer/Double), dann wird dieser Komparator statt. Müssen Sie auch ändern Sie die column-Klasse auf den Tisch-Modell.Damit zu tun, dass Sie haben zu verlängern DefaultTableModel (oder Implementierung von AbstractTableModel oder TableModel) und überschreiben Sie die getColumnClass() Methode.
Wenn Sie können nicht ändern die Daten, die in die Spalte (für einige Grund, warum Sie wollen, um Zeichenfolgen zu speichern gibt), dann werden Sie ändern müssen, um den RowSorter für die Tabelle.
InformationsquelleAutor Pace