java.lang.ArrayIndexOutOfBoundsException: 0 = 0 versucht, JTable aufzufüllen

7

Ich untergliedere JTable und verwende ein DefaultTableModel, um meine Tabellendaten zu modellieren. Die folgende Klasse richtet die JTable ein und fügt dem Modell eine Zeile hinzu.

%Vor%

Zur Anzeige- / Visualisierungszeit wird die folgende Ausnahme ausgelöst:

%Vor%

Ich reiße mir die Haare aus - ich konnte die Ursache dieses immens einfachen Anwendungsfalls nicht finden.

    
Chris K 13.11.2009, 23:17
quelle

9 Antworten

17

Ich denke, Sie müssen Spalten zu Ihrem TableModel hinzufügen. Ihr Code fügt der Tabelle UI-Spalten hinzu, fügt sie jedoch nicht zum Modell hinzu

    
Dmitry 13.11.2009, 23:28
quelle
19

Ich habe auch dieses Problem (mit einer JList und einem DefaultListModel) ausgeführt. Dmitrys Antwort ist richtig.

Allerdings gibt es noch etwas anderes: Diese Ausnahme kann auch ausgelöst werden, wenn Sie das Modell in Swing's Event Dispatch Thread nicht ändern.

Wenn Sie Folgendes tun, können Sie diese Ausnahme vermeiden:

%Vor%

Ссылка

    
Séverin 18.08.2011 21:19
quelle
4

Dmitry hat Recht. Ersetzen Sie

%Vor%

mit

%Vor%

und jetzt kennt das Model die columsn und wird keine Ausnahme mehr ausgeben, wenn Sie versuchen, eine Zeile zu einem Modell hinzuzufügen, das denkt, es habe 0 Spalten

    
jitter 13.11.2009 23:57
quelle
1

Von der API JTable.setAutoCreateColumnsFromModel ():

"Diese Methode ruft createDefaultColumnsFromModel auf, wenn sich autoCreateColumnsFromModel von false in true ändert."

Vector löst ArrayIndexOutOfBoundsException aus - wenn der Index außerhalb des gültigen Bereichs liegt (Index & lt; 0 || index & gt; = size ())

Ich denke, das Tabellenmodell fehlt die Spalten, wie von Dmitry vorgeschlagen

    
Thimmayya 13.11.2009 23:51
quelle
1

Ersetzen Sie Ihren Code durch Folgendes: Hier müssen Sie nur die erste Zeile entfernen, die für alle Zeilen iteriert werden soll

%Vor%     
satya 24.02.2011 05:50
quelle
1

Ich war mit diesem Problem konfrontiert, weil ich der JTable Spalten und Zeilen hinzufügte, nicht dem Modell.

Der beste Weg ist das.

%Vor%     
Sandeep Dass 31.05.2015 08:36
quelle
0

ersetzen

%Vor%

mit

%Vor%

Eine solche Situation kann sich ändern, wenn Sie den Registerkartenbereich im Aktionslistener ändern.

    
yuriy 22.01.2012 21:35
quelle
0

Ein weiteres Problem könnte zusammenhängen, wenn Sie RowSorter verwenden. Wenn Sie das Modell bearbeiten RowSorter probiert das alte Modell neu zu sortieren. Es sollte automatisch neu erstellt und bei jeder Änderung des Tabellenmodells erneut ausgeführt werden.

Sie können das Problem mit

beheben %Vor%

-Hayri

    
Hayri 27.09.2011 11:11
quelle
0

Dmitry hat Recht, aber Sie müssen nur Ihr Modell aktualisieren. Fügen Sie dazu Ihrem Code Folgendes hinzu:

%Vor%     
Eldorim 05.09.2016 14:33
quelle

Tags und Links