通过JTable从List中删除项目

时间:2014-06-20 18:11:13

标签: jtable

我创建了使用ArrayList的TableModel,我试图从表和List中删除所选项目,我希望它删除所有选中的项目,但我抛出了异常,所以我试着让它变得简单,我做了这个:

public void actionPerformed(ActionEvent ev) {
    purchases.remove(purchasesTable.convertRowIndexToModel(purchasesTable.getSelectedRow()));

    purchasesTableModel.fireTableDataChanged();
}

但是当我删除行时,即使它按预期工作,我也会得到以下异常:

  

线程“AWT-EventQueue-0”中的异常   java.lang.IndexOutOfBoundsException:Index:3,Size:3 at   java.util.ArrayList.rangeCheck(ArrayList.java:638)at   java.util.ArrayList.get(ArrayList.java:414)at   table.PurchasesTableModel.setValueAt(PurchasesTableModel.java:62)at   javax.swing.JTable.setValueAt(JTable.java:2743)at   javax.swing.JTable.editingStopped(JTable.java:4725)at   javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:141)     在   javax.swing.DefaultCellEditor中的$ EditorDelegate.stopCellEditing(DefaultCellEditor.java:368)   ...

我不知道是什么导致这个

在setValueAt的模型中我只是这样做: Purchase purchase = list.get(rowIndex);所以根据我的理解,这个函数得到的索引不正确,但为什么呢? ; /

非常感谢大家的帮助; p I I FOUND SOLUTION: 当我删除单元格仍处于编辑模式时,它是JComboBox

if (purchasesTable.isEditing()) purchasesTable.getCellEditor().stopCellEditing();

purchasesTable.editingStopped(new ChangeEvent(purchasesTable));

这两种解决方案都适合我

1 个答案:

答案 0 :(得分:1)

错误告诉您索引号不是ArrayList.size()中的索引。 size()为3是0索引并且将具有索引[0,1,2]。索引3超出范围。