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:
Die Savemethode und die Methode zum auslesen werden beide hintereinander in einem Thread ausgeführt.
Gruß Jan
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:
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:
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