abstractTableModel からすべてのエントリを削除しようとしています。最後に残った行を削除しない限り、すべて正常に動作しますが、これを削除するとすぐに ArrayOutOfBoundsException が発生します。DefaultRowSorter を使用していますが、これは例外のようです。
スレッド「AWT-EventQueue-0」での例外 java.lang.ArrayIndexOutOfBoundsException: 配列インデックスが範囲外です: java.util.Vector.get(Vector.java:694) で 0 が graphics.tableModel.MyTableModel.getValueAt(MyTableModel.java) で発生しました:78) 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. javax.swing.JTable.sortedTableChanged(JTable.java:4106) の JTable.notifySorter(JTable.java:4262) javax.swing.JTable.tableChanged(JTable.java:4383) 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();
ご協力いただきありがとうございます