我做了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