現在、Java スイングのJTable
/にフォーカスの問題があります。JTextEditor
にはJTable
カスタム セル エディタがあり、JTextField
.
問題は、セルの編集中に無効なデータが含まれている場合に、ユーザーが をクリックするJButton
と、テキスト フィールドの編集が停止し、JButton
actionPerformed (クリックされた) が呼び出されることです。はJTable#setValueAt
検証を処理するため、 のデータJTextField
が無効な場合、基になるデータTableModel
は更新されません。
JButton
理想的には、クリックを発生させたくありません。フォーカスはJTable
または にとどまる必要がありJTextField
ます。
ボタンをクリックすると、送信アクションが実行され、テーブルが含まれるフレームが閉じられます。 の検証ではTableModel#setValueAt
値が更新されないため、古い値が送信されます。
これはできますか?私はまだSwingにかなり慣れていないので、何をチェックすればよいかわかりません。
残念ながら、私たちのコードは簡単ではありません。UI は XML から構築され、ボタンはフォーム上の他のものについて何も認識しません (これは私が継承したコードです)。
.net では、Validating イベントを処理してキャンセル フラグを設定することで、コントロールがフォーカスを失うのを止めることができます。Javaにも同様のメカニズムがありますか。