Java实现对组件事件(如单击、输入等)的监听和JavaScript类似,都是先添加Listener,再写触发函数,不同的是,Java实现监听前必须使用implements将各个接口添加到类内。

相关的库为java.awt.event.*

例如要添加行为事件的接口ActionListener,则需要在实现窗口的类内作如下操作:

public class Test extends JFrame implements ActionListener{
    public Test(){
        //...
    }
    
    public void actionPerformed(ActionEvent event){
        //...
    }    
}

注意只要添加了ActionListener接口,并且Test不是抽象类,则必须加入相应的触发函数,这里加入的为actionPerfomed。

以处理按键单击为例,具体步骤如下:

①添加ActionListener接口

②在相应的类内写触发函数actionPerformed(ActionEvent event)

③对按钮(设为button1)添加监听器:button1.addActionListener(this)

④将按钮加入容器

⑤在触发函数内,判断触发对象,有两种方法

第一种,使用event的getSource()方法,获取的是对象,可以使用==表达式直接判断对象,例如

    Object source = event.getSource();
    if(source == button1){
        //...
    }

第二种,事先在添加监听器前设定行为命令,例如先对button1添加动作命令"trig1"

    button1.setActionCommand("trig1");

在触发函数内,使用getActionCommand()方法来获取行为命令:

    if(event.getActionCommand() == "trig1"){
        //...
    }

第二种用法多用在一些多个组件触发相同的动作时,例如退出程序功能,可能同时存在于菜单和工具栏,他们可以使用同样的命令,来简化代码。

对于其他的监听,与此类似,不再赘述,需要注意的是,一定要先添加组件的各种属性,再将其放入容器,否则设置会被忽略。

对于窗口的监听,有大量的方法,如果像上面那样使用,则会产生很多空方法,为了避免这一点,可以采用适配器类来监听。可以在原来的类的下面再创建一个类,继承响应的适配器。

例如下面的键盘监听,添加一个类继承KeyAdapter来实现监听,对于需要的触发函数,覆盖即可

class KeyMonitor extends KeyAdapter{
    public void keyTyped(KeyEvent event){
        //...
    }
}

Java学习笔记(二)事件监听器的更多相关文章

  1. Java精选笔记_Servlet事件监听器

    Servlet事件监听器 概述 在程序开发中,经常需要对某些事件进行监听,如监听鼠标点击事件.监听键盘按下事件等,此时就需要使用事件监听器. 事件监听器用于对程序中发生的事件进行监听,在监听的过程中会 ...

  2. Java学习笔记二十九:一个Java面向对象的小练习

    一个Java面向对象的小练习 一:项目需求与解决思路: 学习了这么长时间的面向对象,我们只是对面向对象有了一个简单的认识,我们现在来做一个小练习,这个例子可以使大家更好的掌握面向对象的特性: 1.人类 ...

  3. Java学习笔记二十八:Java中的接口

    Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...

  4. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  5. java学习笔记 (5) —— Struts2 监听器配置

    1.创建MyListener.java 实现 PreResultLisener 接口 import com.opensymphony.xwork2.ActionInvocation; import c ...

  6. 数组排序、递归——(Java学习笔记二)

    升序:      选择排序:         选定一个元素,一次和后面的元素相比较,如果选定的元素大雨后面的比较元素,就交换位置         先出现最小值,最后出现最大值. public stat ...

  7. Java学习笔记二:数据类型II

    GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/Intpractice3.java 一  Java中的数据类型 Java ...

  8. Java学习笔记二十七:Java中的抽象类

    Java中的抽象类 一:Java抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就 ...

  9. Java学习笔记二十四:Java中的Object类

    Java中的Object类 一:什么是Object类: Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object ...

  10. Java学习笔记二十二:Java的方法重写

    Java的方法重写 一:什么是方法的重写: 如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法. 语法规则 返回值类型.方法名.参数类型及个数都要与父类继承的 ...

随机推荐

  1. Android自定义View(LineBreakLayout-自动换行的标签容器)

      最近一段时间比较忙,都没有时间更新博客,今天公司的事情忙完得空,继续为我的自定义控件系列博客添砖加瓦.本篇博客讲解的是标签自动换行的布局容器,正好前一阵子有个项目中需要,想了想没什么难度就自己弄了 ...

  2. HA机制下的Hadoop配置

    [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://www.cnblogs.com/sdksdk0/p/5585355.html 作者: 朱培    ID:sdksdk0 ----- ...

  3. Android图表库MPAndroidChart(二)——线形图的方方面面,看完你会回来感谢我的

    Android图表库MPAndroidChart(二)--线形图的方方面面,看完你会回来感谢我的 在学习本课程之前我建议先把我之前的博客看完,这样对整体的流程有一个大致的了解 Android图表库MP ...

  4. ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation

    ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  5. Lua判断OS并添加cpath

    Lua判断OS并添加cpath(金庆的专栏)Lua初始化时需要根据OS来设置package.cpath, 如果是Windows系统则添加 ?.dll, 否则添加 ?.so.不然加载错误后缀名的动态库会 ...

  6. studio中碰到的jni问题:java.lang.UnsatisfiedLinkError

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52606328 studio中碰到 ...

  7. Dynamics CRM2016 业务流程之Task Flow(一)

    Task Flow 属于CRM移动端的特性,如果在项目实施中用不到CRM自带的APP或者对自APP不感冒的,那就没有往下看的必要了,移步吧. 该功能默认是不开启的,需要我们去系统设置中开启它,打勾,选 ...

  8. JDBC编程-优化程序(六)

    首先完成DTO类的编写 DTO类是data tranfer object也就是数据传输类,DTO主要用于数据的传输操作,其中包含属性值,以及构造方法和getter ,setter方法等,不会包含业务逻 ...

  9. 4.Lucene3.案例介绍,创建索引,查询等操作验证

     案例: Article.java package cn.toto.lucene.quickstart; publicclassArticle { privateintid; private St ...

  10. FFmpeg源代码简单分析:libavdevice的gdigrab

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...