アプリ版:「スタンプのみでお礼する」機能のリリースについて

ロストフォーカスイベント時のその他のイベント(ボタンイベント)の中止方法

フィールドのロストフォーカスイベントで3文字以上入力していた場合に
エラーメッセージを表示する。
フィールドに4文字値を入力して、フォーカスをフィールドにあてたまま
ボタンを押下するとロストフォーカスイベントが走り、
同時にボタンイベントも発動してしまいます。

ロストフォーカスイベント時にエラーが発生している場合は、
ボタン押下処理を中止するようにしたいのですが、可能でしょうか?

検証は、Java1.6で行っています。

A 回答 (3件)

JButtonにあるsetActionCommandを使用して、何が実行されたかコマンドを決める方法です。


イベントが発生した時、ActionEventオブジェクトからgetActionCommandを使用しコマンドを取得すれば、
どのボタンが押されたのか、唯のロストフォーカスなのか判断できるかなと。

ただ、この方法はメニューから実行、右クリックのコンテキストメニューから実行、ボタンから実行等をすべて同じ処理にしたい場合に使用する方法なので、イベントが違うとうまくいくかどうかちょっと検証が必要です。

この回答への補足

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

ロストフォーカス、ボタン押下のイベント処理で共通処理が呼ばれている場合、
共通処理にて、ロストフォーカスイベントがボタン押下のイベントかを判断する方法と
理解しました。

ロストフォーカス時にエラーとなり、メッセージダイアログがでた時点で、ボタンの
イベントは中止(または、キャンセル)されることが望ましいと思っています。
上記の前提条件の場合は、どのようにするべきでしょうか?

java1.4の時は、

ロストフォーカス時にエラーとなり、メッセージダイアログがでた時点で、ボタンの
イベントは中止(または、キャンセル)されていたのですがね・・・。
なんで、Java1.6になったら、できなくなったのか・・・。 愚痴です。

補足日時:2013/03/21 13:53
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まだ、解決しておりませんが・・・。お礼までに。

お礼日時:2013/04/02 14:57

同じ人ですが、他にはActionCommandを設定する、とか。


lost focusのイベントハンドラでボタンのアクションコマンドが設定されていれば、lost focusイベントをpassさせる。
例によって試したことはありません。

この回答への補足

teketonさん、2回も回答ありがとう御座います。

teketonさんのアドバイスを検討してみましたが、よくわかりませんでした。
よろしければ、もう少し詳細に教えて頂けませんか?

以上、宜しくお願い致します。

補足日時:2013/03/19 17:26
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
まだ、解決しておりませんが・・・。お礼までに。

お礼日時:2013/04/02 14:56

Swing?だったら、InputVerifierを使うと良さそう。


ただ、エラーメッセージの表示がダイアログのような、フォーカスを移す場合だとどうなるかは不明。

参考URL:http://docs.oracle.com/javase/jp/1.3/api/javax/s …

この回答への補足

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

Swingです。
そうですね、忘れていましたがnputVerifierであれば可能っぽいですね。

補足日時:2013/03/12 20:52
    • good
    • 0
この回答へのお礼

捕捉です。
他の方で
inputVerifier以外の方法をご存知の方がございましたら
ご教授ください。

お礼日時:2013/03/12 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A