Я пытаюсь удалить все записи из моей abstractTableModel. Пока я не удаляю последнюю оставшуюся строку, все работает нормально, но как только я удаляю эту, я получаю ArrayOutOfBoundsException. Я использую DefaultRowSorter, и это, похоже, исключение.
Исключение в потоке "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: индекс массива вне диапазона: 0
на java.util.Vector.get (Vector.java:694)
at graphics.tableModel.MyTableModel.getValueAt (MyTableModel.java:78)
at graphics.tableModel.MyTableModel.getColumnClass (MyTableModel.java:90)
в javax.swing.table.TableRowSorter.useToString (TableRowSorter.java:224)
в javax.swing.DefaultRowSorter.updateUseToString (DefaultRowSorter.java:607)
в javax.swing.DefaultRowSorter.sort (DefaultRowSorter.java:556)
в javax.swing.DefaultRowSorter.shouldOptimizeChange (DefaultRowSorter.java:1008)
в javax.swing.DefaultRowSorter.rowsDeleted (DefaultRowSorter.java:866)
в javax.swing.JTable.notifySorter (JTable.java:4262)
в javax.swing.JTable.sortedTableChanged (JTable.java:4106)
в javax.swing.JTable.tableChanged (JTable.java:4383)
at javax.swing.table.AbstractTableModel.fireTableChanged (AbstractTableModel.java:280)
мой код для удаления всех строк:
public void deleteAll() {
int size = data.size()-1;
data.clear();
this.fireTableRowsDeleted(0, size);
}
То же самое происходит с простым удалением последней существующей строки.
public void deleteRow(int row) {
data.remove(row);
}
как я звоню deleteRow:
for (int i = rows.length - 1; i >=0; i--) {
tm.deleteRow (строки [I]);
}
tm.fireTableDataChanged ();
спасибо за вашу помощь