Nach dem Hinzufügen eines TableRowSorter, der dem Modell Werte hinzufügt cause java.lang.IndexOutOfBoundsException: Ungültiger Bereich

9

Nach dem Hinzufügen eines TableRowSorter zu einer Tabelle und dem entsprechenden Modell wird ein entsprechender Zusatz hinzugefügt, der foottable_tablegroowsinserted cause exceptions enthält. Aus dem Test wird deutlich, dass GetRowCount () einen Wert nach dem Modellbereich zurückgibt. Für mich ergibt es jedoch keinen Sinn, wie man nach Hinzufügen eines Sorters oder Filters weiterhin Werte in die Tabelle einfügt.

Als Beispiel habe ich den Zeilenfilter vor dem Hinzufügen von irgendetwas zur Tabelle gesetzt und dann einen Wert zur Tabelle mit den folgenden Aufrufen in meinem Modell hinzugefügt:

%Vor%

Der Zeilenzähler hat die Größe 1 und die Ausnahme wird ausgelöst:

%Vor%

Wenn ich die gleichen Schritte mache, ohne zuerst den Sortierer hinzuzufügen, ist alles in Ordnung. Ich nahm an, dass ich möglicherweise das Modell benachrichtigen musste, dass der Sortierer möglicherweise Änderungen vorgenommen hat und Folgendes versuchte, aber dennoch eine Ausnahme zurückgibt:

%Vor%

Ich habe sogar versucht, den Sortierer innerhalb des Modells zu benachrichtigen, dass dem Modell ein Wert hinzugefügt wurde, bevor das Feuer ausgelöst wird, wie unten, aber es scheitert auch:

%Vor%

Zu guter Letzt habe ich die FireTableRowsInsterted (0,0) fest codiert und keine Ausnahme ausgelöst. Aber nichts wird zum Tisch hinzugefügt? Also, ich weiß, es ist definitiv eine Art von OutOfBounds Problem. Ich habe überall nachgesehen und finde keine Antwort. Wenn jemand eine Idee hat, wie das funktionieren soll, ist es sehr hilfreich. Hier ist Code, der den Sortierer innerhalb von jpanel setzt:

%Vor%

Hier ist Code in meinem Modell, der dem Modell einen Mehrwert hinzufügt:

%Vor%     
steve 28.05.2011, 23:43
quelle

3 Antworten

3

Ich ging zurück und sah mir das genauer an, nachdem ich Kleopatras Kommentar gesehen hatte. Ich habe mein TableModel geändert, nachdem ich einen RowSorter erstellt habe, aber bevor ich den RowSorter an die JTable angehängt habe. Hier ist ein Beispiel, das das Problem zeigt, das ich hatte.

%Vor%     
Ryan J 16.08.2012 17:45
quelle
2

Sie haben einen out by 1 Fehler. Der richtige Code zum Auslösen des Ereignisses lautet:

%Vor%     
Paul 03.06.2011 04:07
quelle
0

Also, im Moment sieht es so aus, als ob Sie Ihr Modell einchecken, wenn Sie sich gerade im Sortiermodus befinden, und wenn dies der Fall ist, rufen Sie nur das Update auf dem Sortiermodell auf. Sonst rufen normale Model Fire Updates alles scheint soweit zu funktionieren. Ich bin immer noch offen für bessere Möglichkeiten, damit umzugehen:

%Vor%     
steve 29.05.2011 18:05
quelle

Tags und Links