Hallo zusammen,
ich hab ein komisches Problem: Ich habe eine JTable und möchte die selektierte Zeile beim Drücken der Entfernentaste löschen. Dazu hab ich den folgenden KeyListener geschrieben:
Wenn ich jetzt aber die letzte (das passiert nur bei der letzten) Zeile versuche so zu löschen, kommt eine Fehlermeldung, die zwar lang ist, aber nicht auf mein Programm verweist. (In dem Fall hatte die Tabelle 4 Zeilen)
Ich bin jetzt ein bisschen hilflos, weil ich nicht weiß, wo in meinem Programm der Fehler liegt. Könnt ihr mir helfen?
Gruß
der Felix
ich hab ein komisches Problem: Ich habe eine JTable und möchte die selektierte Zeile beim Drücken der Entfernentaste löschen. Dazu hab ich den folgenden KeyListener geschrieben:
Code:
public void keyReleased(KeyEvent ke) {
if (ke.getKeyCode() == KeyEvent.VK_DELETE) { // Key festlegen
if (ke.getSource() == table) { // Source festlegen
int row;
if ((row = table.getSelectedRow()) != -1) {
if (JOptionPane.showConfirmDialog(this,
"Wollen Sie die Vokabel wirklich löschen?",
"löschen?", JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
box.getAndRemoveVocable(row);
this.avoidstuckoverflow = true;
model.removeRow(row);
}
}
}
}
}
Wenn ich jetzt aber die letzte (das passiert nur bei der letzten) Zeile versuche so zu löschen, kommt eine Fehlermeldung, die zwar lang ist, aber nicht auf mein Programm verweist. (In dem Fall hatte die Tabelle 4 Zeilen)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3
at java.util.Vector.elementAt(Vector.java:447)
at javax.swing.table.DefaultTableModel.setValueAt(DefaultTableModel.java:665)
at javax.swing.JTable.setValueAt(JTable.java:2686)
at javax.swing.JTable.editingStopped(JTable.java:4668)
at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:142)
at javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:346)
at javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:231)
at javax.swing.JTable$GenericEditor.stopCellEditing(JTable.java:5422)
at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1013)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
at java.awt.Component.processMouseEvent(Component.java:6098)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3276)
at java.awt.Component.processEvent(Component.java:5866)
at java.awt.Container.processEvent(Container.java:2105)
at java.awt.Component.dispatchEventImpl(Component.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2163)
at java.awt.Component.dispatchEvent(Component.java:4288)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4122)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
at java.awt.Container.dispatchEventImpl(Container.java:2149)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4288)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Ich bin jetzt ein bisschen hilflos, weil ich nicht weiß, wo in meinem Programm der Fehler liegt. Könnt ihr mir helfen?
Gruß
der Felix