2Danke
ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
750
750
EMPFEHLEN
-
Hi Leute,
habe das Problem, dass ich ein nicht zu identifizierende Thread Exception bekomme die immer dann auftaucht wenn ich Datensätze in die Tabelle über das TableModel hinzufüge wenn zugleich eine Spalte durch den AutoRowSorter als zu sortieren gesetzt ist. Hier mal die Fehlermeldung, weiter unten der Code fürs hinzufügen, auslesen und speichern in die DB:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 at javax.swing.DefaultRowSorter.convertRowIndexToModel(Unknown Source) at javax.swing.JTable.convertRowIndexToModel(Unknown Source) at javax.swing.JTable.getValueAt(Unknown Source) at javax.swing.JTable.prepareRenderer(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source) at javax.swing.plaf.ComponentUI.update(Unknown Source) at javax.swing.JComponent.paintComponent(Unknown Source) at javax.swing.JComponent.paint(Unknown Source) at javax.swing.JComponent.paintToOffscreen(Unknown Source) at javax.swing.BufferStrategyPaintManager.paint(Unknown Source) at javax.swing.RepaintManager.paint(Unknown Source) at javax.swing.JComponent._paintImmediately(Unknown Source) at javax.swing.JComponent.paintImmediately(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
Die Savemethode und die Methode zum auslesen werden beide hintereinander in einem Thread ausgeführt.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
public void setModelObjects(Vector<Object> modelObjects) throws SecurityException, IllegalArgumentException, SQLException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, IOException, ParseException { if (modelObjects != null && !modelObjects.isEmpty()) { Vector<Vector<Object>> spaltenMeta = getSpaltenMetaData(); addRow(modelObjects.size(), false); for (int i = 0; i < modelObjects.size(); i++) { Object obj = modelObjects.get(i); for (Vector<Object> meta : spaltenMeta) { if (meta.get(1) != null) { Object value = obj.getClass() .getMethod("get" + meta.get(1)).invoke(obj); if (value != null) { int column = findColumn(meta.get(0).toString()); setValueAt(value, i, column); } } } } } }
Gruß Jan
-
Hallo Jan,
wenn du deinen StackTrace mal genauer anschaust, siehst du, dass der Fehler nicht im Code zum Setzen von Tabellenwerten liegt, sondern im RowSorter:
Es ist keineswegs ein "undefinierbarer" Fehler, sondern du überschreitest die Grenzen des Arrays bzw. der Collection in der angezeigten Funktion convertRowIndexToModel(). Vielleicht hast du einen Fehler beim Inkrementieren oder einen falschen Parameter übergeben.Code java:1 2
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 at javax.swing.DefaultRowSorter.convertRowIndexToModel(Unknown Source)
Gruß
miffi"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Douglas Adams
-
Ne hat ja alles wunderbar funktioniert, beim debuggen wurden ja alle Werte korrekt in das TableModel geschrieben. Aber das war ja mal wieder relativ einfach
hier die Lösung:
Code :1
fireTableRowsInserted(0, modelObjects.size() - 1);
Gruß Jan
-
mein Vorschlag ausm anderen Forum auch hier:
wie setzt du deinen Rowsorter?
wenn du ihn so setzt,
dann änder ihn mal folgendermaßen ab:Code :1
sorter = new TableRowSorter<TableModel>();
Code :1
sorter = new TableRowSorter<ThisTableModel>(model);
dadurch werden fast alle NullPointer beim Einfügen von Datensätzen behoben und der fix mit dem -1 wird dadurch nicht mehr benötigt
-
Jo Danke, schon gesehen und erledigt
-
Dat kann echt nich wahr sein, dieser blöde RowSorter macht mich noch fertig

Code :1 2 3 4 5 6
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.DefaultRowSorter.convertRowIndexToModel(Unknown Source) at javax.swing.JTable.convertRowIndexToModel(Unknown Source) at javax.swing.JTable.getValueAt(Unknown Source) at javax.swing.JTable.prepareRenderer(Unknown Source) at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
Irgend ne ahnung was man jetzt noch machen kann?
Gruß Jan
-
Schon erledigt
Ähnliche Themen
-
JTable dynamisch befüllen
Von Myar im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 14.12.07, 15:22 -
eine JTable befüllen
Von Mayday171 im Forum JavaAntworten: 1Letzter Beitrag: 30.05.07, 16:12 -
JTable mit Properties befüllen
Von Unique86 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 20.02.07, 08:57 -
Sortierung einer JTable nach numerischen Spalten
Von Greq im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 10.11.06, 12:00 -
Update Ansicht einer JTable nach Änderungen
Von AlexD1979 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 21.07.03, 00:55





Zitieren
Login




