ここから本文です

動的にJTextFieldを配置している処理があります。

アバター

ID非公開さん

2017/8/2610:25:54

動的にJTextFieldを配置している処理があります。

それら全てに同一インスタンスのForcusListnerをaddしました。
JTextFieldのフォーカスを移動するとForcusListnerが呼ばれます。
ここまではできたんですが、どのJTextFieldのフォーカスを移動したかを判別する術がなく困っております。

私が思いつく範囲ではForcusListnerをJTextFieldごとにインスタンスを作って識別番号のようなものをコンストラクタで渡してやれば、何番目のJTextFieldか判断できるかなと思いました。
こんな原始的な方法しかないのでしょうか?

閲覧数:
39
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

usj********さん

2017/8/2709:30:07

awtを使ったことがないので、ドキュメントを読んで予想しながらの回答ですが、

FocusListenerの各メソッドで引数に渡されるFocusEvent。
これがもつメソッドgetComponent()とgetOppositeComponent()が使えるのではないでしょうか。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

jun********さん

2017/9/123:07:29

ForcusListnerで利用するfocusGained()と、focusLost()メソッドの引数に

FocusEvent型オブジェクトが来てると思いますが、確かそいつのgetSouce()メソッドで
発生したコンポーネントのインスタンスが取得出来ると思います。

こんな感じで判定出来るかと。
JTextField a = new JTextField(...);
JTextField b = new JTextField(...);
JTextField d = new JTextField(...);


@Override
public void focusGained(FocusEvent e) {
if (e.getSource() == a) {
// aのJTextFieldで発生
} else if (e.getSource() == b) {
// bのJTextFieldで発生
} else if (e.getSource() == c) {
// cのJTextFieldで発生
}
}

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる