Einträge aus Table löschen ohne Exception

jothemac

Mitglied
Hallo,

ich möchte gerne per knopfdruck rows aus einer table löschen. Zum testen hat die row 5 Einträge(es ist auch möglich mehrere auf einmal zu löschen).
Wenn ich jetzt den 1 eintrag löschen möchte, bekomme ich folgende fehler Ausgabe:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at java.util.Vector.elementAt(Vector.java:430)
	at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632)
	at stockanalytic3.MainUI.MainUI.getSelectedStockFromTable(MainUI.java:99)
	at stockanalytic3.MainUI.MainUI$1.valueChanged(MainUI.java:60)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
	at javax.swing.DefaultListSelectionModel.removeIndexInterval(DefaultListSelectionModel.java:660)
	at javax.swing.JTable.tableRowsDeleted(JTable.java:4497)
	at javax.swing.JTable.tableChanged(JTable.java:4400)
	at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
	at javax.swing.table.AbstractTableModel.fireTableRowsDeleted(AbstractTableModel.java:245)
	at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:447)
	at stockanalytic3.MainUI.MainUI.deleteBtMouseClicked(MainUI.java:232)
	at stockanalytic3.MainUI.MainUI.access$200(MainUI.java:28)
	at stockanalytic3.MainUI.MainUI$4.mouseClicked(MainUI.java:176)
	at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
	at java.awt.Component.processMouseEvent(Component.java:6385)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
	at java.awt.Component.processEvent(Component.java:6147)
	at java.awt.Container.processEvent(Container.java:2083)
	at java.awt.Component.dispatchEventImpl(Component.java:4744)
	at java.awt.Container.dispatchEventImpl(Container.java:2141)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4289)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
	at java.awt.Container.dispatchEventImpl(Container.java:2127)
	at java.awt.Window.dispatchEventImpl(Window.java:2489)
	at java.awt.Component.dispatchEvent(Component.java:4572)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:704)
	at java.awt.EventQueue.access$400(EventQueue.java:82)
	at java.awt.EventQueue$2.run(EventQueue.java:663)
	at java.awt.EventQueue$2.run(EventQueue.java:661)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:677)
	at java.awt.EventQueue$3.run(EventQueue.java:675)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:674)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Wenn ich jetzt erneut die tablle anklicke, dann verschwindet der erste Eintrag.
Löschen tue ich die einträge so:
Java:
DefaultTableModel model = (DefaultTableModel) stockTable.getModel();
        int[] i = stockTable.getSelectedRows();
        System.out.println("I:"+i[0]);
        for (int x=0;x<i.length;x++) 
        {
            model.removeRow(i[x]);
            
            stockTable.revalidate();
        }

Jemand eine Idee warum ich einen fehler bekomme, aber das löschen dennoch ausgeführt wird?
 

ssoul26

Bekanntes Mitglied
Musst du nicht nach dem Löschen auch dein selektiertes Index um 1 reduzieren.

Wenn ich 3 und 4 auswähle und erst 3 Lösche, dann verschiebt sich die Nummerierung um -1, 4 ist nicht gleich 4, sondern nach dem Löschen auf 3 gerutscht.
 

jothemac

Mitglied
Das müsste ich doch so umgehen können oder:
Java:
DefaultTableModel model = (DefaultTableModel) stockTable.getModel();
        int[] i = stockTable.getSelectedRows();
        System.out.println("I:"+i[0]);
        for (int x=(i.length-1);x>=0;x--) 
        {
            model.removeRow(i[x]);
            model.fireTableDataChanged();
        }

Den fehler bekomme ich immer noch, komisch ist auf das die table sich erst noch zeichnet wenn man wieder in sie hinein klickt, habe es auch schon mit Repaint() versucht, hat nichts gebracht
 

bERt0r

Top Contributor
Läuft deine Methode auf dem EDT? Edit: Ja tut sie. Benutzt du das standard DefaultTableModel oder hast du daran irgendwas überschrieben? Zeig mal ein bisschen code her..
 
Zuletzt bearbeitet:
S

SlaterB

Gast
also wichtig ist erstmal MainUI$1.valueChanged(), in dieser Methode verwendest du den SelectedIndex -1,
das darf nicht sein, da musst du abfragen und bei -1 nichts tun,

warum -1 kommst ist natürlich eine berechtigte Frage, und dass der erste Klick nach dem Löschen nicht richtig funktioniert ist auch nicht gerade akzeptabel,
gab kürzlich schonmal ein Thema, ich selber habe noch nichts dazu herausgefunden
 

Melfis

Aktives Mitglied
Bei deinem eigentlichen Problem kann ich dir nicht helfen, jedoch habe ich trotzdem einen Tipp:

Setzt das model.fireTableDataChanged(); nach die for-Schleife,
ansonsten benachrichtigst du bei 1000 Zeilen 1000 mal alle Listener.

MFG Melfis
 

jothemac

Mitglied
OK Problem solved: Ich hatte noch eine andere methode die aufgerufen wird und den Array out of bounds error erzeugt, das problem habe ich gelöst und nun funktioniert auch alles. Die Tabelle wird auch automatisch refreshed. Danke für die hinweise und Hilfen!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
karlmasutra JavaFX ListView zeigt Einträge nicht an AWT, Swing, JavaFX & SWT 11
F JComboBox und Einträge AWT, Swing, JavaFX & SWT 3
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
MrSnake ComboBox-Einträge werden unsichtbar AWT, Swing, JavaFX & SWT 0
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
D [Anfänger]ComboBox erstellt Einträge in einer anderen ComboBox AWT, Swing, JavaFX & SWT 3
M Swing jTable: aktuell angesehne Einträge um Infos erweitern AWT, Swing, JavaFX & SWT 7
S SWT: Drop-Down Menü-Einträge mit Tooltip hervorheben AWT, Swing, JavaFX & SWT 3
J Zusätzliche Einträge in der Taskliste AWT, Swing, JavaFX & SWT 4
M Eclipse-Platform Combo-Binding für User-Einträge AWT, Swing, JavaFX & SWT 9
M SWT Wie mehr als 5000 Einträge zur Auswahl geben? AWT, Swing, JavaFX & SWT 9
K SWT Mehrere Einträge ins Clipboard legen AWT, Swing, JavaFX & SWT 2
C Swing gleiche Einträge in JTable farblich markieren AWT, Swing, JavaFX & SWT 5
_dp Swing Tabelle: Ausklappbare Einträge AWT, Swing, JavaFX & SWT 2
B Swing JList Letzte Einträge oben ... AWT, Swing, JavaFX & SWT 6
M Doppelte Einträge in JTable AWT, Swing, JavaFX & SWT 4
A Swing JList Einträge entfernen AWT, Swing, JavaFX & SWT 6
T Swing JComboBox Einträge nach Tastendruck auswerten und aktualisieren AWT, Swing, JavaFX & SWT 8
E JCombobox- Einträge aktualisieren AWT, Swing, JavaFX & SWT 2
R Swing JTable Einträge übernehmen AWT, Swing, JavaFX & SWT 4
dzim JFace ListViewer-Einträge mit CellEditor? AWT, Swing, JavaFX & SWT 3
M brauche Hilfe um Einträge aus Jlist zu löschen AWT, Swing, JavaFX & SWT 4
P List-Einträge auslesen AWT, Swing, JavaFX & SWT 4
I JList - Einträge deaktivieren AWT, Swing, JavaFX & SWT 2
G Tabellen Items Einträge Aktualisieren AWT, Swing, JavaFX & SWT 2
B Probleme bei der dynamischen JCombobox-Einträge und Listener AWT, Swing, JavaFX & SWT 2
C JTable: Einträge werden dupliziert, um letzte Reihe zu fülle AWT, Swing, JavaFX & SWT 3
T JList: best. Einträge nicht selektierbar machen AWT, Swing, JavaFX & SWT 4
G Tabellen Einträge löschen - JTable AWT, Swing, JavaFX & SWT 6
G Doppelte Einträge aus JComboBox rausschmeisen AWT, Swing, JavaFX & SWT 2
E Einträge der JComboBox werden durch Grafik verdeckt AWT, Swing, JavaFX & SWT 11
R JMenu einträge werden überdeckt AWT, Swing, JavaFX & SWT 3
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
S JavaFX Boolean ändern Table View AWT, Swing, JavaFX & SWT 14
B JavaFX JavaFX Table gespeichertes Wert auswählen/anvisieren AWT, Swing, JavaFX & SWT 3
C TableModel zugehörige Table ermitteln AWT, Swing, JavaFX & SWT 3
T Table Renderer AWT, Swing, JavaFX & SWT 2
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
E JavaFX Von der Table-Cell zur Row AWT, Swing, JavaFX & SWT 0
A JavaFX Table Delete Row AWT, Swing, JavaFX & SWT 5
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
D JavaFX Table Filter AWT, Swing, JavaFX & SWT 4
R Swing JTable : Header der Spalten ergänzen mit caption (wie bei html-table) AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
J JTabbedPane: table in new tab: tooltip benutzt die column-widths von table in erstem geöffneten tab AWT, Swing, JavaFX & SWT 17
G Border der Komponente bei Table CellRenderer überschreiben AWT, Swing, JavaFX & SWT 0
M MouseListener auf table oder scrollPane AWT, Swing, JavaFX & SWT 11
T SWT checkbox in table AWT, Swing, JavaFX & SWT 6
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
Z JavaFX Table mit MenuButton AWT, Swing, JavaFX & SWT 6
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
E extended Swing Table AWT, Swing, JavaFX & SWT 2
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
E SWT Popupmenu auf der Überschrift eines swt.widgets.Table verhindern? AWT, Swing, JavaFX & SWT 3
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
reibi SWT SWT - Table AWT, Swing, JavaFX & SWT 8
A Swing JButton in einer Table Cell AWT, Swing, JavaFX & SWT 9
lumo SWT JFace Databinding +Custom Table AWT, Swing, JavaFX & SWT 2
M SWT - Table deselecten AWT, Swing, JavaFX & SWT 2
R SWT | Table | Zeilenkopf AWT, Swing, JavaFX & SWT 2
M SWT Table disabled und Scrollbar enabled AWT, Swing, JavaFX & SWT 11
C [SWT] Widget Table verliert nach Sortierung farbige / eingefärbter Background / Zellen AWT, Swing, JavaFX & SWT 3
L Inhalt einer table löschen AWT, Swing, JavaFX & SWT 2
L Jbutton in table AWT, Swing, JavaFX & SWT 2
lumo SWT Table Selection Color +Focus Out AWT, Swing, JavaFX & SWT 14
S SWT Maximum an Items in Table? AWT, Swing, JavaFX & SWT 2
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
Q SWT Mindetsgröße für Table AWT, Swing, JavaFX & SWT 7
1 Swing manual resize table column to min size AWT, Swing, JavaFX & SWT 2
hdi SWT SWT Table: 2 kleine Probleme AWT, Swing, JavaFX & SWT 4
S SWT Table Größen verändern AWT, Swing, JavaFX & SWT 10
lumo SWT Table und Klassen AWT, Swing, JavaFX & SWT 14
lumo SWT Table CellEditor - knifflig AWT, Swing, JavaFX & SWT 35
M SWT Table mit Columns und Items AWT, Swing, JavaFX & SWT 3
L Java Table AWT, Swing, JavaFX & SWT 4
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
A SWT Table mit Bildern und Checkboxes AWT, Swing, JavaFX & SWT 4
A SWT Table hat keine Scrollbar AWT, Swing, JavaFX & SWT 12
A SWT Table clearAll() und zurücksetzen. AWT, Swing, JavaFX & SWT 3
K SWT Table Modell / Datenmodell AWT, Swing, JavaFX & SWT 14
S Table oder TableModel so ueberschreiben, dass Columns minimale Breite haben? AWT, Swing, JavaFX & SWT 2
T SWT - Table Events AWT, Swing, JavaFX & SWT 3
B SWT - Drag & Drop innerhalb einer Table AWT, Swing, JavaFX & SWT 3
T Fokus auf CB in Table mit beliebiger Taste AWT, Swing, JavaFX & SWT 12
S swt table mit checkboxen: wie nachträglich im code setzen? AWT, Swing, JavaFX & SWT 6
S Seltsam: SWT Table zeigt keine Scrollbar an AWT, Swing, JavaFX & SWT 12
G SWT-Table sortieren AWT, Swing, JavaFX & SWT 12
T Input-Check bei Textfeldern in Table AWT, Swing, JavaFX & SWT 5
G SWT Table Controll AWT, Swing, JavaFX & SWT 7
L SWT-Table: Datum ausgeben? AWT, Swing, JavaFX & SWT 5
G Table in SWT AWT, Swing, JavaFX & SWT 2
S Table Row per Drag and Drop in andere Table schieben? AWT, Swing, JavaFX & SWT 14
S SWT Table - Wie Columns hinzufügen / entfernen AWT, Swing, JavaFX & SWT 3
K javax.swing.table.TableRowSorter AWT, Swing, JavaFX & SWT 13
I JComboBox in Table AWT, Swing, JavaFX & SWT 4
G wo wird die table mit daten gefüllt? oô AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben