ArrayIndexOutOfBoundsException:每个 2 >= 1
ArrayIndexOutOfBoundsException: 2 >= 1 on for each
我是 Java 的新手,我正在编写一个使用一些 JTables 的程序。
我有一个删除所选行的按钮,它执行此操作:
public static void removerows() {
int[] row_indexes = TableCA.table.getSelectedRows();
for(int i=0;i<row_indexes.length;i++) {
TableCA.model.removeRow(row_indexes[i]);
}
}
但是当它执行时,我得到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 1
at java.util.Vector.removeElementAt(Vector.java:554)
at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:463)
at fr.diagamma.project.PanelCaisse.removerows(PanelCaisse.java:78)
我搜索了很多,但没有找到关于这种 OutOfBounds 的任何信息。
感谢您的帮助!
我的建议是反转循环的顺序:
public static void removerows() {
int[] row_indexes = TableCA.table.getSelectedRows();
for(int i=row_indexes.length - 1; i >= 0; i--) {
TableCA.model.removeRow(row_indexes[i]);
}
}
这从最后一个元素开始并删除直到它到达第一个。
因为,除非你的row_indexes
只有1个元素,否则有2个错误:
row_indexes
中的索引在 removeRow()
之后不再更新。
- 如果
row_indexes
是递增的顺序,很容易引发 OutOfBoundException。
我是 Java 的新手,我正在编写一个使用一些 JTables 的程序。 我有一个删除所选行的按钮,它执行此操作:
public static void removerows() {
int[] row_indexes = TableCA.table.getSelectedRows();
for(int i=0;i<row_indexes.length;i++) {
TableCA.model.removeRow(row_indexes[i]);
}
}
但是当它执行时,我得到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 1
at java.util.Vector.removeElementAt(Vector.java:554)
at javax.swing.table.DefaultTableModel.removeRow(DefaultTableModel.java:463)
at fr.diagamma.project.PanelCaisse.removerows(PanelCaisse.java:78)
我搜索了很多,但没有找到关于这种 OutOfBounds 的任何信息。 感谢您的帮助!
我的建议是反转循环的顺序:
public static void removerows() {
int[] row_indexes = TableCA.table.getSelectedRows();
for(int i=row_indexes.length - 1; i >= 0; i--) {
TableCA.model.removeRow(row_indexes[i]);
}
}
这从最后一个元素开始并删除直到它到达第一个。
因为,除非你的row_indexes
只有1个元素,否则有2个错误:
row_indexes
中的索引在removeRow()
之后不再更新。- 如果
row_indexes
是递增的顺序,很容易引发 OutOfBoundException。