1

DefaultTableModel クラスの isCellEditable メソッドをオーバーライドして、表のセルを編集不可にしようとしています。匿名の内部クラスを使用してこれを達成しようとしていますが、

ここに画像の説明を入力

ただし、表のセルはまだ編集可能であり、デバッグしようとすると、コードがオーバーライドされたメソッドを実行せず、代わりに DefaultTableModel クラスをインスタンス化した後に DefaultTableModel の isCellEditable メソッドを直接呼び出していることがわかりました。なぜこうなった???

4

2 に答える 2

3

モデルが作成された場所を確認します。テーブルはどこかで初期化されます (行/列データがテーブルに追加された場所)。代わりに(現在コードに表示されています)、内部クラスは別のインスタンスに置き換えられますTableModelDefaultTableModel私が思うインスタンス)

于 2013-09-25T11:47:56.803 に答える
1

isCellEditable(int, int)代わりに、JTableクラスの をオーバーライドしてください。

注:ではなくisCellEditable(int, int)ofをオーバーライドしているため、質問のタイトルは非常に誤解を招くものです。DefaultTableModelJTable

別の注意: GUI ビルダーを使用しているのは明らかだと思いますが、GUI ビルダーからは何も学べないため、使用しないことをお勧めします

于 2013-09-25T11:45:33.363 に答える