ArrayIndexOutOfBounds bei TabelSorter

Hallo,

ich hoffe mir kann jemand diese Frage beantworten.

Ich habe eine JScrollPane mit einer JTable drin. Zusätzlich habe ich einen TableSorter, der beim anklicken der Spaltenüberschriften die Tabelle nach der entsprechenden Spalte sortiert. Das funktioniert auch alles wunderbar. Doch wenn ich die Tabelle ändere (ich mach eine neue Abfrage auf die Datenbank und hab dann weniger Einträge in meiner Tabelle) und sie sortieren will, bekomm ich eine ArrayIndexOutOfBoundsException.
Die Exception wird in der Methode getValueAt in meinen AbstractTableModel geschmissen. Aber an allen Stellen, an denen ich den Wert des Arrays überprüfe sind nicht zu groß!

Kennt dieses Problem jemand und kann mir ne Lösung geben?

Gruß
Juri
 
Tach,
dann schau mal in der getRowCount rein, ob die Berechnung auch nach Änderung noch stimmt. Ebenso wie das Datenmodell, auf welches Du bei getValueAt zugreifst. Ich denke, da gibt es ein kleines Aktualisierungsproblem.
 
Das hatte ich ja auch gedacht, aber ich überprüfe beim degubben das Datenmodell und ich der Wert (also die Größe) ist absolut korrekt, zu jeder Zeit....
 
Nun, wenn das tatsächlich der Fall wäre, würde Dir keine Exception um die Ohren fliegen. ;)
Bist Du sicher, dass Du Dir auch die richtigen Objekte anzeigen lässt im Debugger?
 
Ok, ich hab das Problem gefunden! Der TableSorter hatte wohl noch das alte DataModel! Ich war davon ausgegangen, dass er schon das neue hat, da ich
sorter = new TableSorter(datamodel)
gemacht habe. Das hat wohl nicht so ganz funktioniert.

Besser geht es mit einem
sorter.setModel(datamodel)

Trotzdem Danke für Eure/Deine (Snape) Bemühungen

Gruss
Juri
 
Hallo habe ein ähnliches Problem und will nicht extra 'nen Thread aufmachen.

Habe eine einfache Datenstruktur, aus der ich ein Element entferne, wenn ich es später wieder hinzufüge und danach

Code:
myModel.fireTableRowsDeleted(index,index);

feuere, bekomme ich die ArrayIndexOutOfBoundsException. Mein Model hat bereits die richtige Anzahl von Rows, aber der TableSorter hat sich noch nicht aktualisiert und wirft die Exception hier:

Code:
public int modelIndex(int viewIndex) {
        return getViewToModel()[viewIndex].modelIndex;
}

Eigentlich meldet sich doch der TableSorter als Listener in meinem Model an und sollte solche Events eigentlich mitbekommen oder?
 
Zuletzt bearbeitet:
Zurück