DarthShader
Erfahrenes Mitglied
Hallo,
ich versuche, eine JTable zu sortieren. Ich habe eine Spalte, welche die Zeit darstellt - der Typ dieser Spalte ist "Calendar". Ich habe nun einen TableRowSorter erstellt mit dem entsprechenden SortKey für die Spalte.
In der Dokumentation [1] steht, dass beim Sortieren geschaut wird, ob das Objekt der Spalte ein compareable ist - was Calendar ja ist. Ich kann also 2 Calendar Objekte über .compareTo miteinander vergleichen, was auch funktioniert.
Nur in der Tabelle funktioniert es nicht: die Zeitwerte werden nicht korrekt sortiert, und ich erkenne irgendwie kein Muster, wann es korrekt ist und wann nicht. Ein Beispiel:
1. 10.11.2008 10:15
2. 10.11.2008 10:22
So liegt das 2. Datum klar nach dem ersten, es ist also später. Die Tabelle sortiert dies auch korrekt, d.h. die Zeile mit der Zeit "10:22" ist unter der Zeile mit der Zeit "10:15".
Aber bei folgenden Zeiten:
1. 10.11.2008 10:15
2. 10.11.1999 10:22
Hier ist das 2. Datum VOR dem 1., da es ja im Jahre 1999 liegt (1999 liegt zeitlich vor 2008). Meine Tabelle kappiert das aber einfach nicht, und sortiert es so, dass wieder das 2. Datum unter der Zeile mit dem 1. Datum ist, was definitiv falsch ist.
Wenn ich ein paar Daten in die Tabelle eintrage, so sieht es danach so aus:
1. 22.05.2008 15:54
2. 22.05.2008 15:57
3. 22.05.1007 15:58
4. 22.05.1006 15:56
5. 22.05.1999 16:00
Wie kommt denn nur diese Sortierung zu Stande? Ich meine, Zeile 1 und 2 sind ja korrekt, aber die folgenden Zeilen 3, 4 und 5 sollten doch alle vor 1 und 2 liegen - warum werden die nach unten sortiert?
Ich weiß, ich habe jetzt keinen Code gepostet. Dieser ist nicht so klein, falls das aber hilfreich ist, mache ich das natürlich noch. Ich glaube momentan fast nicht, dass es am Code liegt, da die Sortierung mit anderen Spalten ja funktioniert (z.B. mit Strings), nur beim Calendar gibt es so merkwürdige Probleme. Vielleicht hat ja jemand schonmal Calendar Objekt in einer Tabelle benutzt und danach sortiert.
Über Hilfe würde ich mich sehr freuen, ich bin hier halb am verzweifeln...
Vielen Dank!
[1] http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting
ich versuche, eine JTable zu sortieren. Ich habe eine Spalte, welche die Zeit darstellt - der Typ dieser Spalte ist "Calendar". Ich habe nun einen TableRowSorter erstellt mit dem entsprechenden SortKey für die Spalte.
In der Dokumentation [1] steht, dass beim Sortieren geschaut wird, ob das Objekt der Spalte ein compareable ist - was Calendar ja ist. Ich kann also 2 Calendar Objekte über .compareTo miteinander vergleichen, was auch funktioniert.
Nur in der Tabelle funktioniert es nicht: die Zeitwerte werden nicht korrekt sortiert, und ich erkenne irgendwie kein Muster, wann es korrekt ist und wann nicht. Ein Beispiel:
1. 10.11.2008 10:15
2. 10.11.2008 10:22
So liegt das 2. Datum klar nach dem ersten, es ist also später. Die Tabelle sortiert dies auch korrekt, d.h. die Zeile mit der Zeit "10:22" ist unter der Zeile mit der Zeit "10:15".
Aber bei folgenden Zeiten:
1. 10.11.2008 10:15
2. 10.11.1999 10:22
Hier ist das 2. Datum VOR dem 1., da es ja im Jahre 1999 liegt (1999 liegt zeitlich vor 2008). Meine Tabelle kappiert das aber einfach nicht, und sortiert es so, dass wieder das 2. Datum unter der Zeile mit dem 1. Datum ist, was definitiv falsch ist.
Wenn ich ein paar Daten in die Tabelle eintrage, so sieht es danach so aus:
1. 22.05.2008 15:54
2. 22.05.2008 15:57
3. 22.05.1007 15:58
4. 22.05.1006 15:56
5. 22.05.1999 16:00
Wie kommt denn nur diese Sortierung zu Stande? Ich meine, Zeile 1 und 2 sind ja korrekt, aber die folgenden Zeilen 3, 4 und 5 sollten doch alle vor 1 und 2 liegen - warum werden die nach unten sortiert?
Ich weiß, ich habe jetzt keinen Code gepostet. Dieser ist nicht so klein, falls das aber hilfreich ist, mache ich das natürlich noch. Ich glaube momentan fast nicht, dass es am Code liegt, da die Sortierung mit anderen Spalten ja funktioniert (z.B. mit Strings), nur beim Calendar gibt es so merkwürdige Probleme. Vielleicht hat ja jemand schonmal Calendar Objekt in einer Tabelle benutzt und danach sortiert.
Über Hilfe würde ich mich sehr freuen, ich bin hier halb am verzweifeln...
Vielen Dank!
[1] http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#sorting