java-swing-事件监听-焦点
开始不知道焦点是啥,其实就是打字的时候,这个⼀闪⼀闪的竖线。
与焦点事件有关的信息:
事件名称: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添加焦点
javaswing实现购买
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);//设置可见
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论