1

いくつかの列を持つ JTable があります。そのうちの 1 つは、JPanel に 3 つのボタンを表示するためのカスタム レンダラーと、クリック可能にするためのカスタム エディターを備えています。ボタンの 1 つは、その行 ID の削除コマンドをサーバーに送信し、データ モデルをクリアしてデータを再度ロードすることにより、サーバーからテーブル データを再ロードします。これが発生すると、行がなくなっても別の行の別のボタンをクリックするまで、3 つのボタンを持つセルが表示され続けます (ただし、行の残りの部分は表示されません)。

設定しましputClientProperty("terminateEditOnFocusLost", Boolean.TRUE)たが、フォーカスを別のコンポーネントに変更しても解決しません。

データを更新する前に行自体を削除しようとしました(すべての行を削除しても)、必ずfireTableRowsDeleted().

cancelCellEditing()また、の関数とstopCellEditing()関数を呼び出してTableCellEditor、編集行/列を別のセルに手動で設定しようとしました。

どんな助けでも大歓迎です。


わかりましたので、私はそれを理解しました。私は最終removeEditor()的にテーブルに電話をかけ、それを修正しました。

回答ありがとうございます。

4

2 に答える 2

1

putClientProperty("terminateEditOnFocusLost", Boolean.TRUE) を設定しましたが、フォーカスを別のコンポーネントに変更しても役に立ちません。

このメソッドは、ボタンをクリックしたときに actionPerformed メソッドではなく、テーブルを作成するときに呼び出す必要があります。

于 2011-09-29T15:07:43.557 に答える
-1

わかりました、それで私はそれを理解しました。データが更新される直前にテーブルでremoveEditor()を呼び出すことになり、それで修正されました。

回答ありがとうございます。

于 2011-09-30T19:17:21.463 に答える