应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型。
事件模型简介及常见事件模型
对于采用了图形用户界面的程序来说,事件控制是非常重要的。
一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件。
一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知。
每种类型的事件都有其自己的注册方法,一般形式为:
void addTypeListener(TypeListener e);
注意:
注册事件的方法名并不真的是addTypeListener,其中的Type是事件类型,根据不同的事件追加不同类型的监听,如:追加按钮按下事件的添加监听方法为:addActionListener(ActionEvent e),而e是一个事件监听器的引用。
事件控制的过程
事件控制过程可以分为以下四步:
1. 监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为“监听者接口”(Listener interface)。
2. 事件源是一个对象,它可以注册一个或多个监听器对象,以便向其发送事件对象。
3. 事件源在发生事件时向所有注册的监听器发送事件对象。
4. 监听器对象根据事件对象中封装的信息来确定如何响应这个事件。
如果觉得这个过程比较抽象,那么我们看看这样一个场景:在城市的十字路口上为了监控交通违章,那么在路口上(事件源)就会安装一个监控摄像头(监听器对象),这个监控摄像头在有违章发生时(事件触发时)会自动捕获违章,然后传达到监控大厅,监控大厅根据违章情况作出相应的处理(事件响应,也可以说是事件处理,就是发生事件后做什么处理方式)。
那么我们不难发现这样一个事实:出现不同的事件需要用不同的事件类来捕获。如图1所示,为常用的事件类的体系结构。
我们再来看看事件类型的具体说明,如表1所示。
下节我们会对几种常用的事件类型进行详细介绍。
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop