版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章事件处理12.1事件基本概念12.2委托事件模型12.3事件处理程序本章小结
12.1事件基本概念
12.1.1事件窗口的事件(event)指的是用户使用鼠标、键盘在窗口程序中对窗口组件进行的各种操作,例如鼠标点击、进入、移动、拖动以及键盘键入等。事件也可以由操作系统触发,例如时间计时器等,事件类的主要类层次如图12-1所示。
图12-1事件类层次结构
java.util.EventObject是所有事件类的超类,具有方法getSource(),用于返回产生某事件的组件对象(事件源);java.awt.AWTEvent是所有AWT事件的根事件类,此类及其子类取代了原来的java.awt.Event类,具有方法getID(),返回某事件的ID号。
Java的部分事件类描述如表12-1所示。
12.1.2事件源
事件源(EventSource)即事件发生的地方,主要指的是事件发生在哪个窗口组件上。上述的事件类大多与相应的事件源对应,如表12-2所示。
12.1.3监听器接口与监听器对象
窗口组件的事件如何进行处理呢?Java将窗口组件的事件处理“委托”给监听器对象来完成,监听器对象是监听器接口的实现类对象。
1.监听器接口
Java的接口java.util.EventListener是所有监听器接口的父接口,该父接口下约有70多个子接口,较为常用的接口如表12-3所示。
不同的监听器接口监听的事件源不同,监听的具体事件也不同;在监听器接口中声明了被监听组件发生相应事件时应该被调用的事件处理方法,方法的具体代码由监听器接口的实现类来完成。例如键盘监听器接口KeyListener将监听某个窗口组件的键盘事件,接口的定义如下:
键盘监听器接口KeyListener声明了三个方法监听某个组件上对应的事件,当事件发生时将调用相应的方法:
(1)键盘按键被按下,调用keyPressed方法。
(2)键盘按键抬起来,调用keyReleased方法。
(3)键盘按键被敲击一次,调用keyTyped方法。
2.监听器对象
监听器对象是监听器接口实现类的实例对象,该对象具有监听窗口组件指定事件的能力,当该事件在窗口组件上发生时,监听器对象能够获取该事件对象并执行预定义的方法,用以实现事件处理。
对于不同组件可能发生的对应事件,需要选择相应的监听器接口,自定义监听器类实现该接口,将事件发生时要执行的动作代码写到接口声明的方法中,然后创建监听器对象与被监听的组件进行绑定,就可以“坐等”该组件上指定事件的发生。
12.1.4监听器适配器
监听器适配器(ListenerAdapter)是空实现了对应监听器接口的类,即监听器适配器将监听器接口的所有方法进行了实现,但是方法体为空,这样可方便程序员继承监听器适配器而不用实现监听器接口,如图12-2所示。
图12-2监听器适配器
因为适配器已经空实现了监听器的所有抽象方法,对于自定义监听器类而言,继承了适配器也就相当于空实现了监听器接口。对于接口中的多个抽象方法,需要在哪个方法中写事件处理代码,只需要重写那个方法即可,其它不需要的方法可以不用管。常用监听器对应的适配器如表12-4所示。
12.2委托事件模型
从前面对Java事件处理的基本概念的描述可知,窗口组件对事件的处理是“委托”给监听器对象来完成的,而事件处理要求Java程序员需要做的有以下几步:(1)编写自定义监听器类,可以实现对应的监听器接口,也可以继承对应的监听器适配器,在该类中实现/重写对应事件的处理方法。
(2)使用自定义监听器类创建监听器对象,将该对象与要监听的窗口组件进行“关联”。
(3)当该窗口组件上被监听的事件发生时,就会被监听器对象监听到并获得该事件对象,然后自动执行预定义的事件处理方法。
该模型如图12-3所示。图12-3委托事件模型
图12-3中,要注意两类线型:
(1)虚线说明:
①需要在程序中预先定义好监听器接口实现类。
②在监听器类中要完成具体的事件处理方法,即预先定义的事件处理的动作代码。
③将监听器实现类产生的监听器对象与窗口组件进行注册/绑定。
(2)实线说明:
①当用户有鼠标或键盘的操作在被监听的窗口组件上发生时,系统将产生相应的事件对象。
②事件源组件将事件对象传递给已注册的监听器对象,然后由监听器对象接管事件处理,展现出预定义的事件处理动作。
12.3事件处理程序
12.3.1标准事件处理JButton按钮组件的标准动作是点击鼠标左键,该动作将产生ActionEvent事件对象,然后由ActionListener监听器实现类的对象来监听该事件并进行处理,ActionListener接口只定义了一个方法:publicvoidactionPerformed(ActionEvent
e);
按照上述委托事件模型的描述,对按钮的事件进行处理,只需要完成下面两步操作:
(1)编写监听器接口实现类实现ActionListener接口,在actionPerformed方法中写入点击按钮的将要实现的动作代码。
(2)将该用户自定义监听器类的对象与按钮组件进行注册(绑定)。
完成以上两步操作后,当用户使用鼠标点击该按钮时,预定义的事件处理动作代码就会被自动运行。
程序结果:.
点击第一个按钮结果
点击第二个按钮结果:
12.3.2标准事件处理的另外两种形式
上述标准事件处理的程序结构形式是在BookView类中定义了一个用户自定义监听器的内部类MyButtonListener,这是一种比较常用的程序结构,还可以使用下面两种形式来完成事件处理。
1. BookView1类自己实现ActionListener接口
程序结果:
程序结构与上述程序运行结果是一样的,在此不再重复。
2. BookView2类使用匿名监听器类的方式
程序结果:
程序结构与上述程序运行结果是一样的,在此不再重复。
12.3.3具体事件处理
上述程序是标准事件处理,主要是监听处理一些组件的标准动作。如果想针对更为具体的组件事件进行处理,就需要实现具体的事件监听器接口。
程序结果:
本章小结1.事件是可能发生在窗口组件上的各种动作,包括键盘、鼠标的动作,窗口拉伸,焦点的获得与失去等等,java.util.EventObject下面的各个事件子类与这些事件对应。2.事件源是事件发生的地方,不同的窗口组件作为事件源对应不同的事件。3.不同的事件监听器接口对应不同组件上可能发生的事件,声明了相应的监听方法,就表示当监听到组件上发生的事件时要执行相应的方法,具体代码由实现监听器接口的实现类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年交管学法减分道题模拟考试题库及参考答案详解【考试直接用】
- 高中生拖延心理说课稿
- 规范拆卸DC-DC装置说课稿2025学年中职专业课-电动汽车高压系统基本原理与维修-新能源汽车运用与维修-交通运输大类
- 项目四 设计制作自行车里程仪-体验作品的迭代优化教学设计高中信息技术沪科版2019选择性必修6 开源硬件项目设计-沪科版2019
- 高中生2025年民族团结主题班会说课稿
- 羊的产品品质评定教学设计中职专业课-畜禽生产-畜牧类-农林牧渔大类
- 一年级体育下册 30米跑(考核)教学设计
- 临床查对制度执行标准细则
- 周转材料租赁管理程序规范
- 外墙保温系统竣工验收技术规范
- (正式版)T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 2026年北京市西城区初三一模英语试卷(含答案)
- 九师联盟2026届高三年级下学期4月测试英语试卷
- 新高考浪潮下生物学教学中学习共同体的构建与实践探索
- 2024年高考化学试卷(重庆)
- 2026年广东佛山市高三二模高考物理模拟试卷试题(含答案详解)
- 2026年中国化工经济技术发展中心招聘备考题库及1套参考答案详解
- 特种设备数据分析师面试题及答案解析
- 化工事故应急处理培训
- 魏晋南北朝书法艺术
- 2025年纪检监察笔试题及答案
评论
0/150
提交评论