Probleme beim zykl. aktulisieren von Daten in JTable

apa13179

Mitglied
Hallo Freunde,
ich habe Probleme mit dem zyklischen Aktualisieren von Daten in JTable.
Beim ersten Mal werden die Daten richtig dargestellt. Nur wenn ich die Daten aktualisieren lasse, erscheint die Meldung :

Exception in thread "Timer-2" java.lang.ArrayIndexOutOfBoundsException: 8 >= 8
at java.util.Vector.removeElementAt(Vector.java:558)
at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:462)
at MMI_kinds.setTableLinestops(MMI_kinds.java:119)

der SourceCode:
Java:
  public static void setTableLinestops(DatabaseUtility DBUtil) throws SQLException, ParseException{
       
        SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String str;
        final DefaultTableModel model = (DefaultTableModel) Window.jTLineStops.getModel();
        Object[] [] rowData = queryDB.getLinestops(Integer.valueOf(Window.jTFShiftID.getText()), DBUtil);
        String[] arTabData = new String[model.getColumnCount()];
        int rowCnt = model.getRowCount();  [B]//aktuell 16[/B]
        System.out.println("getRowCount = " +rowCnt);
        for (int i = 0; i<rowCnt;i++){
            model.removeRow(i);
            System.out.println("Records entfernt .. " +i);
        }
        model.fireTableDataChanged();
        for (int i = 0; i<rowData.length; i++){
            arTabData[0] = (String) rowData[i][0];
            arTabData[1] = (String) rowData[i][1];
            arTabData[2] = (String) rowData[i][2];
            arTabData[3] = (String) rowData[i][3];
            arTabData[4] = (String) rowData[i][4];
            arTabData[5] = new SimpleDateFormat("dd.MM.yy HH:mm").format(d.parse((String) rowData[i][5]));
            str = (String) rowData[I][6];
            if (str != null){str = new SimpleDateFormat("dd.MM.yy HH:mm").format(d.parse((String) rowData[i][6]));};
           
            arTabData[6] = str;
            arTabData[8] = (String) rowData[i][7];
            model.addRow(arTabData);
        }
    }
 
Zuletzt bearbeitet von einem Moderator:
Beim ersten Mal sind keine Daten im Model daher funktioniert es auch ohne Probleme
Sobald du removeRow aufrufst entfernst du eine Zeile aus dem Model, sprich es sind nur noch 15 Zeilen drinnen. (die anderen rücken vor)

Lösung: lasse deine Schleife so wie sie ist, aber entferne immer die erste Reihe 😉
 
Kannst du mir noch einen Tipp geben?
Ist mein Lösungsansatz für das Befüllen einer Tabelle so richtig/optimal?
Oder gibt es bessere Lösungen?
 

Zurück
Oben