簡體   English   中英

使用AbstractTableModel從JTable刪除行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM