Hallo,
ich habe nochmal eine Frage. Ich habe eine JTable, die sich beliebig sortieren lässt. Allerdings bräuchte ich den ursprünglichen Index einer Reihe.
Ich weiß, dass man über DefaultTableModel.getElementAt(index) den richtigen Wert herausfindet. Da mich die Werte in der Tabelle aber nicht interessieren, sondern nur der Index selbst, komme ich so nicht weiter.
Gibt es dafür eine Mäglichkeit?
Vielen Dank
Hallo,
ich hab unten schon mal kurz geantwortet und mich dann nicht mehr gemeldet. Asche auf mein Haupt 
Wie du den ursprünglichen Index bekommst, kann man so pauschal nicht sagen. Das mußt du auf jeden Fall aus deinem TableModel herauskitzeln. Ich hoffe mal du hast ein eigenes Tablemodel.
Entscheidend ist schon mal, wie die Sortierung durchgeführt wird. Die Sortierung sollte in deinem Fall nicht auf den Originaldaten durchgeführt werden, da sonst eine ursprüngliche Position weg ist. Eine Lösung wäre, z.B. ein int-Array einzuführen, das die Beziehung von tatsächlich angezeigter Zeile zur Zeile im Originaldatenbestand herstellt.
Schau dir mal dieses Beispiel an (das untere): http://www2.gol.com/users/tame/swing/examples/JTable…
Hier wird in der Methode getValueAt(row,col) zuerst der Zeilenindex geholt, in welcher Zeile sich die Daten wirklich befinden (im originalen Datenbestand):
.public Object getValueAt(int row, int col) {
. int rowIndex = row;
. if (indexes != null) {
. rowIndex = indexes[row];
. }
. return super.getValueAt(rowIndex, col);
.}
Bei einer Sortierung wird dann nicht der Datenbestand selbst angefasst, sondern nur das int-Array indexes angepasst.
Wenn du dann noch eine Methode einbaust, die dir den rowindex zurückgibt (Zeile im Datenbestand), wärst du der Lösung vielleicht etwas näher. Die Methode könnte z.B. so aussehen:
.public int getOriginalRow(int row) {
. int rowIndex = row;
. if (indexes != null) {
. rowIndex = indexes[row];
. }
. return rowindex;
.}
Na dann noch viel Spaß beim Basteln.
Gruß
Jodus
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]