JXTable Invalid range Problem

bladepit

Bekanntes Mitglied
Hallo zusammen,

ich bekomme zur Zeit eine Exception die ich absolut nicht nachvollziehen kann:

Exception in thread "Thread-5" java.lang.IndexOutOfBoundsException: Invalid range
at javax.swing.DefaultRowSorter.checkAgainstModel(DefaultRowSorter.java:904)
at javax.swing.DefaultRowSorter.rowsInserted(DefaultRowSorter.java:844)
at javax.swing.JTable.notifySorter(JTable.java:4258)
at javax.swing.JTable.sortedTableChanged(JTable.java:4106)
at javax.swing.JTable.tableChanged(JTable.java:4383)
at org.jdesktop.swingx.JXTable.tableChanged(JXTable.java:1524)
at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
at javax.swing.table.AbstractTableModel.fireTableRowsInserted(AbstractTableModel.java:215)
at javax.swing.table.DefaultTableModel.insertRow(DefaultTableModel.java:359)
at javax.swing.table.DefaultTableModel.addRow(DefaultTableModel.java:333)
at javax.swing.table.DefaultTableModel.addRow(DefaultTableModel.java:344)
at de.mudisar.MainWindow.addRow(MainWindow.java:2326)
at de.mudisar.dataloader.SelectionDataLoader.run(SelectionDataLoader.java:46)

Und zwar da an der Stelle, wo ich meinem Model, welches zu einem JXTable gehört, eine neue Zeile hinzufügen will.

Ich habe auf dieser Tabelle auf verschiedenen Spalten jeweils einen anderen Comparator für die Sortierung innerhalb der Tabelle. Rühren die Probleme daher?

Ansonsten ist noch zu sagen, dass die Methode, welche die neuen Zeile zu dem Model hinzufügt aus einem Thread gestartet wird. Sprich das passiert im Hintergrund.

Ich darf / kann leider den Code nicht wirklich kopieren.

Hat trotzdem einer ne Idee? Hoffe habe es so gut beschrieben, dass es jemand versteht.

Grüße

bladepit
 

AlexSpritze

Bekanntes Mitglied
Das macht die Methode
Code:
checkAgainstModel
:

Java:
private void checkAgainstModel(int firstRow, int endRow) {
           if (firstRow > endRow || firstRow < 0 || endRow < 0 ||
                   firstRow > modelRowCount) {
               throw new IndexOutOfBoundsException("Invalid range");
           }
       }

Da scheint eine deiner Bedingungen beim Sortieren nicht zu passen. ModelRowCount kommt von deinem Model.
 

bladepit

Bekanntes Mitglied
Hmm ich verstehe aber nicht wie da eine der Bedingung nicht stimmen kann wenn ich einfach eine neue Zeile oder mehrere neue Zeilen hinzufüge.

Das dürfte ja keine der Bedingung fehlschlagen lassen.
 

AlexSpritze

Bekanntes Mitglied
Vielleicht hilft es da zu debuggen. Einfach mal in die Zeile mit dem throw .. einen Breakpoint setzen. Und dann schauen, was die einzelnen Variablen für Werte annehmen.
 

Kleopatra

Mitglied
Hört sich an wie eine EDT Verletzung: updates des Models _müssen_ auf dem EDT passieren, nicht in einem Hintergrundthread.

Gruß
Jeanette
 

bladepit

Bekanntes Mitglied
Hallo an alle,

wollte nur das Thema als gelöst markieren.

Es war tatsächlich ein Problem mit den Threads. Nachdem dieses bereinigt war lief alles Problemlos.

Danke

Gruß

bladepit
 

Ähnliche Java Themen

Neue Themen


Oben