2014-06-20 43 views
0

我做了TableModel使用ArrayList,我试图从表和列表中删除选定的项目,我希望它删除所有选定的项目,但我有异常抛出,所以我试图使它简单,我做了这个:从列表中删除项目通过JTable

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

    purchasesTableModel.fireTableDataChanged(); 
} 

但是当我删除行,即使它的工作原理是有时意我得到这些异常:在线程“AWT-EventQueue的 - 0” 的Java

异常.lang.IndexOutOfBoundsException:索引:3,大小:3在 java.util.ArrayL ist.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)维持在 javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:141) javax.swing.JTable.editingStopped(JTable.java:4725)在 javax.swing.DefaultCellEditor中的$ EditorDelegate.stopCellEditing (DefaultCellEditor.java:368) ...

,我不知道是什么导致这个

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

好谢谢大家的帮助,P我找到了解决方案: 当我删除单元格仍然在编辑模式下,它的JComboBox

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

purchasesTable.editingStopped(new ChangeEvent(purchasesTable)); 

这两种解决方案,为我

回答

1
工作

错误是告诉你你的索引号不是ArrayList.size()中的一个索引。 3的大小()是0索引,并将有索引[0,1,2]。索引3超出范围。

+0

我意识到这一点,我问为什么会发生这种情况...... – user3758262