Swing AWT-Exception bei JTable mit JComboBox beim Löschen der letzten Zeile

speckyspooky

Mitglied
Hallo Zusammen,

ich hoffe mir kann jemand hier weiterhelfen.
Ich schreibe eine GUI mit einer JTable. Damit der User nicht alles eingeben muss, bekommt die JTable JComboBoxen als DefaultCellEditor zugehordnet, welche durch eine Datenbank befüllt werden.
Weiterhin habe ich zwei Buttons angelegt zum hinzufügen und löschen von Rows.
Das hinzufügen klappt ohne Probleme.
Allerdings macht das löschen Probleme, aber nur der letzten Zeile. Wenn ich die letzte Zeile von zum Beispiel 6 Zeilen lösche, dann bekomme ich beim Focus setzen auf die Tabelle eine "AWT-EventQueue-0"-Exception. ;(
Diese Fehlermeldung wird nicht beim löschen direkt ausgegeben, sondern beim setzen des Focus auf die JTable. Hier die Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 5 >= 5
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:648)
at javax.swing.JTable.setValueAt(JTable.java:2709)
at javax.swing.JTable.editingStopped(JTable.java:4711)
at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:125)
at javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:350)
at javax.swing.DefaultCellEditor$3.stopCellEditing(DefaultCellEditor.java:140)
at javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:215)
at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:980)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
at java.awt.Component.processMouseEvent(Component.java:6260)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Irgendein Element versucht Zeile 6 zu aktualisieren, die ja schon weg ist. Da würde ich natürlich auch schimpfen. Wenn ich die JComboBoxen wieder heraus nehme, dann tritt dieser Fehler nicht auf.

1. So definiere ich meine Tabelle:
Java:
    jTable.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {},
        new String [] {"Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6", "Title 7", "Title 8", "Title 9"}
    ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Boolean.class, java.lang.Boolean.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
        };
        boolean[] canEdit = new boolean [] {
            true, true, true, false, true, true, true, true, true
        };

        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }

        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit [columnIndex];
        }
    });

2. Erstellung der JComboBox und Zuweisung zur JTable
(Der Fehler tritt unabhängig von Items in der JComboBox auf.)
Java:
javax.swing.JComboBox cbCondition   = new javax.swing.JComboBox();
javax.swing.table.TableColumn tbColumn = jTable1.getColumnModel().getColumn(0);
tbColumn.setCellEditor(new javax.swing.DefaultCellEditor(cbCondition));

3. Meine Add- bzw. Del-Methode
Java:
    private void jBRowAddMouseClicked(java.awt.event.MouseEvent evt) {                                      
        javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel) jTable1.getModel();
        int addrow[] = jTable1.getSelectedRows();
        if ( addrow.length != 0) {
            for ( int i=addrow.length; i > 0 ; i--) {
                model.insertRow(addrow[i-1]+1, new Object[]{"","","","",false,false,"","","AddLine"});
            }
        } else {
            model.addRow(new Object[]{"","","","",false,false,"","","AddBottom"});
        }
}                                     

    private void jBRowDelMouseClicked(java.awt.event.MouseEvent evt) {                                      
        javax.swing.table.DefaultTableModel model =  (javax.swing.table.DefaultTableModel) jTable1.getModel();
        int delrow[] = jTable1.getSelectedRows();
        for ( int i=delrow.length ; i > 0 ; i--) {
            model.removeRow(delrow[i-1]);
        }
}

Ich habe das TableModel untersucht und die Tabelle an sich aber beide weisen nach dem löschen der letzten Zeile die gleiche Struktur auf. Überhaupt beim Löschen der anderen Zeilen besteht das Problem nicht. ???:L

Lösungsansatz:
Das einzige was ich herausgefunden habe ist, wenn ich im delete ein "model.fireTableStructureChanged();" dann wird die Tabelle vollständig neu gesetzt und der Fehler tritt nicht mehr auf. Dafür muss ich aber alle DefaultCellEditor(en), sowie die weiteren Tabelleneigenschaften, damit die Tabelle wie vorher aussieht.

Gibt es nicht neine andere Methode außer als mit dem Hammer darauf zu hauen???

Danke an euch!!!
 
S

SlaterB

Gast
wenn du eine der vorherigen Zeilen löschst, dann gibt es bisher ja keinen Fehler weil der Index noch hoch genug ist,
aber wird dann nicht der Wert einer anderen Zeile verändert?.. (*)

vielleicht hilft folgende Option
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
so dass diese noch offene Änderung vor dem Button zur Löschung ausgeführt wird

eine andere extreme Variante wäre noch, setValueAt() im Model zu überschreiben und dort nichts zu tun wenn der Index nicht passt,
aber das ist allgemein ja keine schöne Vorstellung, besonders wegen (*)
 

speckyspooky

Mitglied
Die Methode zum Löschen der Zeilen funktioniert ja eben, sprich alle Indix-Werte die angesprochen werden könne auch gelöscht werden.
Der Überlauf passiert wenn ich den Focus neu auf die Tablle setze. Es kommt mir so vor, als ob "Irgendetwas" versucht die Tabelle neu zu aktualisieren und dieses "Irgendetwas" hat nicht mitbekommen, dass die letzte Zeile entfernt wurde.
Wenn er dann mit dem alten Vektor arbeitet, geht das natürlich schief. Allerdings tritt dies nur auf "mit JComboBox!" ohne geht es perfekt.

Dein putClientProperty probiere ich heute Abend mal aus.

PS.: Ich habe gestern Abend noch meinen Hammer fertig gestellt und wenn ich nach fireTableStructureChanged(); die Tabelle in ihrer Struktur/Aussehen neu aufbaue, sieht es aus wie vorher und es geht auch nichts verloren.
 

speckyspooky

Mitglied
Ich habe den putClientProperty ausprobiert, allerdings hat dieser nichts genutzt. Es scheint, als ob es an dem DefaultCellEditor liegt. Dieser scheint noch den alten Tabellen-Index zu besitzen und bei aktualisierung des DatenVektors tritt der Fehler auf.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JTable ValueChanged verursacht Exception AWT, Swing, JavaFX & SWT 3
Daniel_L JTable, (Auto-)RowSorter und NullPointer-Exception AWT, Swing, JavaFX & SWT 6
B JTable Vector Exception bei eigenem CellEditor AWT, Swing, JavaFX & SWT 3
H Exception: java.lang.ClassCastException AWT, Swing, JavaFX & SWT 2
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
beli3ver JavaFX Anwendung startet nicht, kann den Fehler nicht finden (Exception in Application start method) AWT, Swing, JavaFX & SWT 1
Z JavaFX Exception in Application start method AWT, Swing, JavaFX & SWT 2
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
R AWT no such child Exception AWT, Swing, JavaFX & SWT 7
L JavaFX Exception nach includieren einer fxml // nested controller AWT, Swing, JavaFX & SWT 1
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
A Swing Exception in thread "AWT-EventQueue-0" AWT, Swing, JavaFX & SWT 1
W JavaFX Warum kriege ich eine Exception? AWT, Swing, JavaFX & SWT 23
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
L JavaFX JavaFX stürtzt durch einen Server#connect Exception AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Exception Message von Model Class via Controller in View darstellen AWT, Swing, JavaFX & SWT 39
L Java FX Exception beim start AWT, Swing, JavaFX & SWT 2
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
S java.fxml.load.exception und keine automatische Aktualliseriung der Mainausgabe AWT, Swing, JavaFX & SWT 5
VfL_Freak AWT Exception in der Eventqueue AWT, Swing, JavaFX & SWT 8
A Swing Null Pointer Exception obwohl Objekt initialisiert AWT, Swing, JavaFX & SWT 21
X Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 AWT, Swing, JavaFX & SWT 6
H JavaFX Ein View vorschalten Exception AWT, Swing, JavaFX & SWT 7
S NullPointer Exception beim Laden von Bildern AWT, Swing, JavaFX & SWT 11
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
M 3D-Grafik Mac Java 3D in Eclipse Exception AWT, Swing, JavaFX & SWT 0
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
I Opencv Imgproc.floodfill exception AWT, Swing, JavaFX & SWT 1
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
T Gui Exception AWT, Swing, JavaFX & SWT 2
X Auf Fensterklasse zugreifen (Nullpointer Exception) AWT, Swing, JavaFX & SWT 2
M Threads - nicht erklärbare Exception AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
J Einträge aus Table löschen ohne Exception AWT, Swing, JavaFX & SWT 6
C Event Handling Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException AWT, Swing, JavaFX & SWT 43
V Swing Nullpointer Exception bei JFormattedTextField AWT, Swing, JavaFX & SWT 4
N Swing Exception: Comparison method violates its general contract! AWT, Swing, JavaFX & SWT 13
S Exception bei BufferStrategy AWT, Swing, JavaFX & SWT 8
H Swing Exception's und MVC AWT, Swing, JavaFX & SWT 35
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
K AWT DataBuffer in DataBufferInt Exception AWT, Swing, JavaFX & SWT 2
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
O Immer Exception in AWT-EventQueue-0 AWT, Swing, JavaFX & SWT 5
F Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null AWT, Swing, JavaFX & SWT 5
F Swing Seltsame Exception AWT, Swing, JavaFX & SWT 5
R Swing Files auflisten (JButton, JList, Exception) AWT, Swing, JavaFX & SWT 4
V LookAndFeel Nullpoint Exception AWT, Swing, JavaFX & SWT 2
Airwolf89 Swing Exception beim Füllen einer Tabelle AWT, Swing, JavaFX & SWT 10
hdi SWT Zwei mal Shell öffnen = Exception AWT, Swing, JavaFX & SWT 6
N Exception Behandlung mit setDefaultUncaughtExceptionHandler, insbesondere im EventDispatcher Thread AWT, Swing, JavaFX & SWT 4
O Probleme beim Zeichnen und AWT-Event-Queue-0 Exception AWT, Swing, JavaFX & SWT 5
O Exception bei repaint AWT, Swing, JavaFX & SWT 3
D Bild zeichnen lassen aus array, null pointer Exception AWT, Swing, JavaFX & SWT 2
S Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 7
M Exception in eine JTextArea anzeigen AWT, Swing, JavaFX & SWT 7
T Exception: Adding a window to a container AWT, Swing, JavaFX & SWT 14
G Kann mir jemand diese Exception erklaeren? AWT, Swing, JavaFX & SWT 8
T AWT Exception AWT, Swing, JavaFX & SWT 5
A Exception beim LineWrapping AWT, Swing, JavaFX & SWT 16
P Für mich unverständliche Exception AWT, Swing, JavaFX & SWT 3
N JList - Nullpointer Exception AWT, Swing, JavaFX & SWT 4
Lony AbstractTableModel Exception in thread "AWT-EventQueue- AWT, Swing, JavaFX & SWT 3
T Warum schmeißt das eine Exception? AWT, Swing, JavaFX & SWT 6
I EventDispatchThread Exception AWT, Swing, JavaFX & SWT 5
M Problem: "ArrayIndexOutOfBounds Exception" AWT, Swing, JavaFX & SWT 11
C Out of Bounds Exception, Array of JTextField AWT, Swing, JavaFX & SWT 6
D Seltsame AWT-Exception AWT, Swing, JavaFX & SWT 2
M Button und Exception mit NetBeans AWT, Swing, JavaFX & SWT 3
P paint null pointer exception AWT, Swing, JavaFX & SWT 3
M Exception Meldung aus Thread an jTextField1 übergeben AWT, Swing, JavaFX & SWT 6
A Null pointer exception beim Neuzeichnen AWT, Swing, JavaFX & SWT 4
R DataVector bei TableModel - Class Cast Exception AWT, Swing, JavaFX & SWT 9
G Drag & Drop bzw. Data Transfer - Exception nach Drag AWT, Swing, JavaFX & SWT 1
K Exception mit "Unknown Source" AWT, Swing, JavaFX & SWT 5
Z jar-File mit SWT - Exception AWT, Swing, JavaFX & SWT 4
F Habe Problem mit dem Abfangen einer Exception AWT, Swing, JavaFX & SWT 10
V Null Pointer Exception bei JTextField setText AWT, Swing, JavaFX & SWT 25
T Programm funkt. nicht - Exception AWT, Swing, JavaFX & SWT 7
A Exception in thread "AWT-EventQueue-0" java.lang.N AWT, Swing, JavaFX & SWT 4
G Exception in JList oder JTextArea AWT, Swing, JavaFX & SWT 9
M java headless exception AWT, Swing, JavaFX & SWT 5
O Exception abfangen AWT, Swing, JavaFX & SWT 19
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23

Ähnliche Java Themen

Neue Themen


Oben