我做了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));
这两种解决方案,为我
我意识到这一点,我问为什么会发生这种情况...... – user3758262