[英]Removing a row from a JTable using AbstractTableModel
我有一個JTable
。 該表使用的是我設計的自定義模型; 自定義模型是extends AbstractTableModel
。 我有一個按鈕,使用戶可以刪除選定的/突出顯示的行。
我已經嘗試過此代碼,但它給了我一個類強制轉換異常-
myTableModel cannot be cast to DefaultTableModel.
下面是代碼。
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.removeRow(table.convertRowIndexToModel(table.getSelectedRow()));
model.fireTableDataChanged();`
我已經在網上搜索過,但始終是DefaultTableModel
但我有AbstarctTableModel
。
我們該如何解決?
我已經嘗試過此代碼,但是它給了我一個類強制轉換異常-myTableModel無法強制轉換為DefaultTableModel。
該錯誤是不言自明的:給您提供具有自己的表模型的表,則table.getModel()
將永遠不會返回DefaultTableModel
實例。
我們該如何解決?
通過將table.getModel()
向下轉換為適當的類(您的類)。 然后調用您提供的方法以從表模型中刪除行。 例如:
int modelRowIndex = table.convertRowIndexToModel(table.getSelectedRow());
MyTableModel model = (MyTableModel)table.getModel();
model.removeRowFromMyModel(modelRowIndex);
請參閱此問題中從AbstractTableModel
擴展而來的自定義表模型的完整示例。
我們絕對不應從外部顯式調用任何fireXxx()
方法。 那些需要在需要時由AbstractTableModel
子類在內部調用。 恕我直言,這些應該受到protected
而不是public
,以避免錯誤使用它們。 但是由於某些原因我並不知道他們把它們public
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.