zoukankan      html  css  js  c++  java
  • java-swing-事件监听-焦点监听器

    感谢大佬:https://blog.csdn.net/weixin_44512194/article/details/93377551

    开始不知道焦点是啥,其实就是打字的时候,这个一闪一闪的竖线。

    与焦点事件监听器有关的信息:
    事件名称:FocusEvent。
    事件监听接口: FocusListener。
    需要实现它的两个方法,分别是
    **focusGained(FocusEvent arg0)**方法
    **focusLost(FocusEvent arg0)**方法
    第一个方法在组件捕获到焦点是会触发,第二个方法在组件失去焦点时触发
    事件相关方法: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);   //设置可见
    	}
    }
    
    
  • 相关阅读:
    java正则表达式(九)
    java正则表达式(八)
    java正则表达式(十)
    正确理解ThreadLocal
    Class.getResource与ClassLoader.getResource()区别
    seajs中define方法的id和dependencies参数
    seajs研究一二三
    十八年开发经验分享(三)问题解决篇(中)
    EntityModelStudio系列教程4静态建模进阶
    EntityModelStudio系列教程6EMLib框架之Orm
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621619.html
Copyright © 2011-2022 走看看