从 Jtable 中删除行时出错
Error when delete row from Jtable
我的 Jtable 有一个 listSelectionListener :
jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(), 0));
}
});
我创建了一个按钮来删除 Jtable 的所有行,事件为:
for (int i =jTable1.getModel().getRowCount()-1; i >=0 ; i--) {
((DefaultTableModel)jTable1.getModel()).removeRow(i);
}
如果我在没有选择任何行的情况下按下按钮,没有错误,但是当我选择一行然后按下按钮时,我得到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
当 table 没有 ListSelectionListener 时不会发生这种情况。
我哪里错了?
在此先感谢您的帮助。
你能试试这个吗?
DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
dtm.setRowCount(0);
This don't happen when table don't have ListSelectionListener
所以我猜你的代码删除了 table 中的所有行。随着行被删除,行 selection 必须更改,因为不再有任何行 select.
System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(), 0));
然后执行上面的语句,getSelectedRow() 方法return -1 导致异常。尝试:
int selectedRow = jTable1.getSelectedRow();
System.out.println("Selected Row: " + selectedRow;
if (selectedRow != -1)
System.out.println(jTable1.getValueAt(selectedRow, 0));
我的 Jtable 有一个 listSelectionListener :
jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(), 0));
}
});
我创建了一个按钮来删除 Jtable 的所有行,事件为:
for (int i =jTable1.getModel().getRowCount()-1; i >=0 ; i--) {
((DefaultTableModel)jTable1.getModel()).removeRow(i);
}
如果我在没有选择任何行的情况下按下按钮,没有错误,但是当我选择一行然后按下按钮时,我得到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
当 table 没有 ListSelectionListener 时不会发生这种情况。 我哪里错了?
在此先感谢您的帮助。
你能试试这个吗?
DefaultTableModel dtm = (DefaultTableModel) jTable1.getModel();
dtm.setRowCount(0);
This don't happen when table don't have ListSelectionListener
所以我猜你的代码删除了 table 中的所有行。随着行被删除,行 selection 必须更改,因为不再有任何行 select.
System.out.println(jTable1.getValueAt(jTable1.getSelectedRow(), 0));
然后执行上面的语句,getSelectedRow() 方法return -1 导致异常。尝试:
int selectedRow = jTable1.getSelectedRow();
System.out.println("Selected Row: " + selectedRow;
if (selectedRow != -1)
System.out.println(jTable1.getValueAt(selectedRow, 0));