java-swing-イベントリスナー - リスナーの焦点

彼は、点滅する垂直バーを入力するとき、実際には、何であるかを知らない焦点を当てるようになりました。

イベントリスナーの焦点についての情報:
イベント名:のFocusEvent。
イベントリスナインタフェース:のFocusListener。
二つの方法、すなわち、それを実装する必要が
**のfocusGained(のFocusEvent arg0に)**方法
**のfocusLost(のFocusEvent arg0に)**方法
フォーカスを捕捉する第1の方法はアセンブリをトリガーする、コンポーネントに失うする2番目の方法場合フォーカストリガ
イベントに関連するメソッド:addFocusListenerはリスナーを除去するために()、リスナーを追加removeFocusListener()。

今では小さなプログラム特定の使用経験のフォーカスリスナー。

次のようにステップ・コードによってステップがあります:

クラスをインポートするには:

import javax.swing.JFrame;   //顶层容器 (框架)
import javax.swing.JLabel;   //标签
import javax.swing.JTextField;  //文本框,本列为其添加焦点事件监听器
import javax.swing.JPanel; //中间容器 (嵌板)最常用的面板
import java.awt.event.FocusEvent;    //焦点事件
import java.awt.event.FocusListener;  //创建监听类时要实现的接口

ウィンドウ、パネル、テキストボックス、およびラベルを作成します。

JFrame jframe = new JFrame("动作监听");  //窗口
JPanel jpanel1 = new JPanel();  //面板
JLabel jlabel1 = new JLabel();  //三个标签,1用于事件触发显示内容
JLabel jlabel2 = new JLabel("普通文本框");  //标签
JLabel jlabel3 = new JLabel("添加了焦点监听器的文本框");  //标签
JTextField jtextfield1 = new JTextField("",15); //普通文本框
JTextField jtextfield2 = new JTextField("",15); //要添加焦点监听器的文本框

ここでのFocusListener・リスナー・クラス・インタフェースを実現するために準備されたキーは、私は一般的な名前の内部クラスを使用して、第三の方法を使用し、です。

class myFocusListener implements FocusListener
        {
            @Override
            public void focusGained(FocusEvent arg0)
            {
                // 获取焦点时执行此方法
            	jlabel1.setText("文本框获得焦点,正在输入内容");
            }
            @Override
            public void focusLost(FocusEvent arg0)
            {
                // 失去焦点时执行此方法
            	jlabel1.setText("文本框失去焦点,内容输入完成");
            }
        }

フォーカスリスナーを追加し、テキストボックスをしてみましょうjlabel3

jtextfield2.addFocusListener(new myFocusListener());

追加コンポーネントの最後に、動作

jlabel1.setText("文本框暂未触发事件");

jpanel1.add(jlabel1);       //将jlabel1添加到面板,先显示未触发状态
jpanel1.add(jlabel2);    //显示“普通文本框”
jpanel1.add(jtextfield1);    //添加普通文本框jtextfield1
jpanel1.add(jlabel3);    //显示“添加了焦点监视器的文本框”
jpanel1.add(jtextfield2);    //添加有焦点监视器的文本框jtextfield2
jframe.add(jpanel1);    //面板添加入窗口

結果:
ここに画像を挿入説明
完全なソースコード:

JFrame jframe = new JFrame("动作监听");  //窗口
jframe.setSize(200, 200);   //设置窗口大小
JPanel jpanel1 = new JPanel();  //面板
JLabel jlabel1 = new JLabel();  //三个标签,1用于事件触发显示内容
JLabel jlabel2 = new JLabel("普通文本框");  //标签
JLabel jlabel3 = new JLabel("添加了焦点监听器的文本框");  //标签
JTextField jtextfield1 = new JTextField("",15); //普通文本框
JTextField jtextfield2 = new JTextField("",15); //要添加焦点监听器的文本框
public class text_FocusListenner
{
	public static void main(String[] args) 
	{
		JFrame jframe = new JFrame("动作监听");  //窗口
		JPanel jpanel1 = new JPanel();  //面板
		JLabel jlabel1 = new JLabel();  //三个标签,1用于事件触发显示内容
		JLabel jlabel2 = new JLabel("普通文本框");  //标签
		JLabel jlabel3 = new JLabel("添加了焦点监听器的文本框");  //标签
		JTextField jtextfield1 = new JTextField("",15); //普通文本框
		JTextField jtextfield2 = new JTextField("",15); //要添加焦点监听器的文本框

		class myFocusListener implements FocusListener
        {
            @Override
            public void focusGained(FocusEvent arg0)
            {
                // 获取焦点时执行此方法
            	jlabel1.setText("文本框获得焦点,正在输入内容");
            }
            @Override
            public void focusLost(FocusEvent arg0)
            {
                // 失去焦点时执行此方法
            	jlabel1.setText("文本框失去焦点,内容输入完成");
            }
        }
        //关键的一句话,添加监听器
		jtextfield2.addFocusListener(new myFocusListener());
		
		jlabel1.setText("文本框还暂时未触发事件");
		
		jpanel1.add(jlabel1);       //将jlabel1添加到面板,先显示未触发状态
		jpanel1.add(jlabel2);    //显示“普通文本框”
		jpanel1.add(jtextfield1);    //添加普通文本框jtextfield1
		jpanel1.add(jlabel3);    //显示“添加了焦点监视器的文本框”
		jpanel1.add(jtextfield2);    //添加有焦点监视器的文本框jtextfield2
		jframe.add(jpanel1);    //面板添加入窗口
		
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时操作
		jframe.setVisible(true);   //设置可见
	}
}

おすすめ

転載: blog.csdn.net/weixin_44512194/article/details/93377551