- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JOptionPane.showOptionDialogの不都合)
JOptionPane.showOptionDialogの不都合
このQ&Aのポイント
- JDeveloperで作成しているツールにおいて、TextFieldオブジェクトからfocusLostした時に延々とダイアログが出続ける現象が発生してしまいます。
- 調べて見た所、isFocusTraversableメソッドをオーバーライドしてfalseを返すようにすれば解決する可能性がありますが、JAVAが初めてで分からないため、具体的な実装方法がわかりません。
- 上手く反映させるためには、MsgBoxクラス内でisFocusTraversableメソッドをオーバーライドし、falseを返すようにする必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
focusLostのイベントはshowOpenDialogで出たダイアログを閉じた瞬間にも発生しています。 そのためダイアログ表示の無限Loopに陥ってしまいます。 これを回避するためにはFocusEventクラスにあるisTemporaryというメソッドを使用します。 このメソッドはフォーカス変更イベントがテンポラリであるか、パーマネントであるかを示します。 (詳しくはSUNが提供しているAPIをご参照下さい) 【例】 jTextField1.addActionListener(new java.awt.event.ActionListener() { public void focusLost(FocusEvent e) { if ( e.isTemporary() ){ return; } //ダイアログ呼び出し } }); これで解決できるのではないでしょうか? 自信がありませんのでお試しくださいませ。
お礼
無事に確認出来ました! わざわざオーバーライドしなくても こんな簡単な方法で可能だったのですね。 本当に助かりました。 どうも有難う御座います。