
No.1ベストアンサー
- 回答日時:
常にfalseが返ってくるというのは、おそらくはフレームが
まだ表示される前に呼び出しをしているからだと思います。
コンポーネント表示前にはフォーカスは当たらないので注意
が必要です。
質問である、現在のフォーカスが当たっているコンポーネント
の取得方法ですが、一番簡単なのはFocusListenerを使う方法
ではないでしょうか。
・まずはJFrameにFocusListenerを追加。
class MyFrame extends JFrame implements FocusListener{
・次に、focusGained(),focusLost()を実装。
public void focusGained(FocusEvent fe){
System.out.println(fe.getComponent().getName()+" FocusGained");
}
public void focusLost(FocusEvent fe){
System.out.println(fe.getComponent().getName()+" FocusLost");
}
実装内容は用途に合わせて変更して下さい。
・JTextFieldの初期化時の設定。
JTextField tf1, tf2, tf3 ;
tf1=new JTextField();
tf1.setName("TextField-1");
tf1.addFocusListener(this);
tf2=new JTextField();
・
・
・
とする事でフォーカス変更を調べる事が出来ると思います。
レスポンスの速さに驚きました。回答ありがとうございます。アドバイスいただいたやり方で収得できました。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JFrame{
private JTextField tf1 = new JTextField();
private JTextField tf2 = new JTextField();
public Test() {
JPanel p = new JPanel();
tf1.setName("TEST1");
tf1.addFocusListener(new FocusAdapter(){
public void focusGained(FocusEvent fe){
String name = fe.getComponent().getName();
System.out.print(name);
}
});
tf1.setPreferredSize(new Dimension(100,20));
tf1.setMaximumSize(new Dimension(100,20));
tf1.setMinimumSize(new Dimension(100,20));
p.add(tf1);
tf2.setName("TEST2");
tf2.addFocusListener(new FocusAdapter(){
public void focusGained(FocusEvent fe){
String name = fe.getComponent().getName();
System.out.print(name);
}
});
tf2.setPreferredSize(new Dimension(100,20));
tf2.setMaximumSize(new Dimension(100,20));
tf2.setMinimumSize(new Dimension(100,20));
p.add(tf2);
getContentPane().add(p, java.awt.BorderLayout.CENTER);
pack();
}
public static void main(String[] args) {
Test test = new Test();
/* 終了処理を追加 */
test.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}
});
/* 実際に表示する */
test.setVisible(true);
}
}
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- Windows 10 WindowsUpdateで再起動を阻止したいです 3 2023/03/15 22:41
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- その他(メールソフト・メールサービス) 【GAS】GMail自動送信 2 2022/09/04 06:19
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- ノートパソコン パソコンを、アップグレードした後に出来た、Cドライブの後に出来た、このドライブは? 3 2023/04/03 17:10
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Windows 10 (緊急)windowsのタスクバーやアプリ?が反応しない 3 2023/03/28 05:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
クリックしても反応してくれま...
-
フレーム上のコンポーネントの...
-
文字の色の変更
-
パネルを切替ると、リサイズす...
-
Googleツールバーライクなコン...
-
「ScrollPane」のイベントの取...
-
キーイベント処理について
-
imageにリスナーを付けたい
-
SwingでのGroup作成
-
VB6のツールボックスへのコンポ...
-
アクティブなTextFiel...
-
画像を一瞬だけ表示する。
-
コンポーネントの種類について
-
NetBeansのデザイン画面で自動...
-
DELPHI2005 検索結果の複数の項...
-
VS2010デザイナーの読込エラー...
-
テキストフィールドのレイアウト
-
System.exit(0);について
-
ボタンに絵をはる方法(JBuilder)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
VB.NETでMSComm が追加できず?
-
Visual Basic 2010を使ってRS-2...
-
ファイル保存先のダイアログが...
-
requestFocusについて
-
java gui のイベント処理が重い
-
swingでボタンにボーダーをつけ...
-
ラベルをプログレスバーのよう...
-
ツールボックスのような折りたたみ
-
C++Builder でPanel上にフォー...
-
C#で設定時刻到来時にイベント...
-
文字の色の変更
-
VB6のツールボックスへのコンポ...
-
C++ で PostqreSQL
-
画像の表示
-
コンポーネントとBeanの違いとは?
-
フレーム上のコンポーネントの...
-
BoxLayout使用時の不具合について
-
C#で参照したCOMコンポーネント...
-
VS2010デザイナーの読込エラー...
おすすめ情報