私は持ってい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
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加