有了ActionListener事件监听器,就一定要有FocusListener焦点事件监听器。

FocusListener接口所在包

FocusListener接口在event包中,即在开头引入该包。

import java.awt.event.*;

FocusListener接口使用方法

先说一下什么叫焦点监听器。焦点监听器其实就是可以监听组件是否为当前焦点的一个监听器。

举个例子方便理解,比如我们本来在编写一个文本框1,之后突然想去编写另一个文本框2,我们就会去点击文本框2,那么原来的文本框1就失去了焦点,而相对应的文本框2就获得了焦点,而这个焦点监听器就是用来监听我们什么时候把焦点移到这个文本框或者移开这个文本框。

那么有人可能会问这个跟ActionListener事件监听器有什么区别,还以这个例子来说,如果我们点击这个文本框他就会触发一个事件,相应的移开焦点会触发另一个事件,而事件监听器只有当你在编写该文本框时按下回车键才会触发相应的事件。

接下来,我们就可以真正开始学习该FocusListener接口了。该接口只用实现两个方法分别叫做focusGained(FocusEvent arg0)和focusLost(FocusEvent arg0)。这两个方法看名字大概就可以明白意思了,第一个Gained方法就是在组件获得焦点时执行的程序,那对应的第二个Lost方法就是在组件失去焦点时执行的程序了。

class TextListener/*这里可以更改类名*/ implements FocusListener {

public void focusGained(FocusEvent arg0) {

/*得到焦点时执行得内容*/

}

public void focusLost(FocusEvent arg0) {

/*失去焦点时执行得内容*/

}

}

但如果只写这一个TextListener类我们发现是无法使用的。呵呵,你还没有添加这个对象呢。记得要给文本框添加一个TextListener的对象,即写如下代码。

TextListener text_listener = new TextListener();

text_field.addFocusListener(text_listener);

接下来如果你又想移除该对象了,就直接remove掉就行了。

text_field.removeFocusListener(text_listener);

最后再唠叨一句,记住焦点监听器不仅仅可以去监听文本框,对于其他组件如密码框、文本域等组件也是适用的。

代码

package technology;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MyFirstFocusListener extends JFrame {

static final long serialVersionUID = 1L;

Container container = getContentPane();

JPanel panel_north = new JPanel(), panel_center = new JPanel();

JTextField text_field1 = new JTextField(10), text_field2 = new JTextField(10);

JLabel label = new JLabel();

class TextListener implements FocusListener {

public void focusGained(FocusEvent arg0) {

label.setText("文本框1获得焦点");

}

public void focusLost(FocusEvent arg0) {

label.setText("文本框1失去焦点");

}

}

MyFirstFocusListener() {

super("JFrame窗体");

this.setBounds(200, 50, 200, 200);

text_field1.addFocusListener(new TextListener());

panel_north.add(label);

panel_center.add(text_field1);

panel_center.add(text_field2);

container.setLayout(new BorderLayout());

container.add(panel_north, BorderLayout.NORTH);

container.add(panel_center, BorderLayout.CENTER);

this.setVisible(true);

}

public static void main(String args[]) {

new MyFirstFocusListener();

}

}

效果图如下:

java focuslistene_Java:FocusListener接口相关推荐

  1. java类引用接口的注释_java – 在接口类型上使用注释有什么好处?

    在这个 example中,注释类型(@interface)下面: @interface ClassPreamble { String author(); String date(); int curr ...

  2. 初识java类的接口实现

    初识java类的接口实现 如果两个类之间不存在继承关系,且两个类都想实现同一个接口,两个类都必须实现接口中全部方法,否则报语法错误 如果两个类之间存在继承关系也想实现同一个接口,父类如果实现了某个接口 ...

  3. closeable java_【转】java.io.Closeable接口

    说到java.io.Closeable接口就避不开java.lang.AutoCloseable接口,因为在java版本7.0时引入了java.lang.AutoCloseable接口,同时java. ...

  4. Java中实现接口与继承的区别

    ** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...

  5. Objective-C 入门(七)协议 protocol(JAVA中的接口)

    Objective-C 入门(七)协议 protocol(JAVA中的接口) 接口的作用想必大家都比较了解 OV中的 protocol 相比接口作用相似 语法稍有不同 1.先来看声明一个协议 在创建文 ...

  6. java字典写实例,基于JAVA的新华字典接口调用代码实例

    基于JAVA的新华字典接口调用代码实例 接口描述:基于JA V A的新华字典接口调用代码实例 接口平台:聚合数据 import java.io.BufferedReader; import java. ...

  7. 零基础Java学习之接口

    介绍 接口的介绍我们从三个方面来说: 从使用上来说是继承的一种扩展,因为java不支持多继承,而有了接口就能够实现多继承的效果. 有时候需要必须从几个类中抽取出一些共同的行为特征,而它们之间又没有继承 ...

  8. 学习 Java 8 - 函数式接口 Lambda

    学习 Java 8 - 函数式接口 Java 8 引入了函数式接口的概念.函数式接口其实就是只包含一个抽象方法的普通 Java 接口.在没有引入函数式接口之前,我们通常使用内部类和匿名类来实现类似的功 ...

  9. Java中的接口命名[关闭]

    本文翻译自:Interface naming in Java [closed] Most OO languages prefix their interface names with a capita ...

最新文章

  1. andoridView修改
  2. ensp大型网络环境设计与实现_mongodb内核源码设计实现、性能优化、最佳运维系列-网络传输层模块源码实现三...
  3. 《网络攻防实践》第二周学习总结
  4. ionic 完美仿微信摇一摇
  5. lucene之创建索引代码
  6. discuz X3全局变量$_G
  7. python vtk mousemove_VTK的视点研究之三维空间漫游(转载)
  8. Android之解决ubuntu没有无线网卡和手机wifi实现adb wifi调试
  9. c语言实现两个有序链表的合并(代码示例)
  10. 八皇后问题详解(最短代码)
  11. Java Servlet 使用slf4j配置log4j
  12. Solaris10文件布局
  13. sublime test3 php语法错误高亮
  14. 入门highchart 第一天—— 环形图
  15. 【2018徐州ICPC Gym-102012 M】Rikka with Illuminations【计算几何】
  16. 系统集成项目管理工程师真的好考吗?
  17. IT桌面运维常识系列 - MDT
  18. 局域网版teamview跨网远程访问的方法分享
  19. 给图片加水印最简单的方法
  20. 低版本的iphone 无法跑在xcode8上

热门文章

  1. java字符串 n换行符_java切割字符串中的回车应注意是\n\r不是\n
  2. 巧用Excel记录单快速输入数据
  3. CAMB输出保留小数位数问题
  4. 安装debian总结以及编译linux内核
  5. PHP性能调优,PHP慢日志---PHP脚本执行效率性能检测之WebGrind的使用
  6. 再谈CVE-2017-7047 Triple_Fetch和iOS 10.3.2沙盒逃逸
  7. GBDT--简单理解
  8. 软件测试工程师的角度看论证学问
  9. Linux内存管理优化技巧集锦
  10. xml语法规则(一)