- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AWT事件模型
本模块讨论了事件驱动的图形用户界面(GUI)的用户输入机制。
第一节 相关问题
讨论 - 以下为与本模块内容有关的问题:
哪些部分对于一个图形用户界面来说是必需的?
一个图形化程序如何处理鼠标点击或者其他类型的用户交互?
第二节 目 标
完成本模块之后,你应当能够:
编写代码来处理在图形用户界面中发生的事件
描述Adapter类的概念,包括如何和何时使用它们
根据事件对象的细节来确定产生事件的用户动作
为各种类型的事件创建合适的接口和事件处理器。
第三节 什么是事件?
如果用户在用户界面层执行了一个动作(鼠标点击和按键),这将导致一个事件的发生。事件是描述发生了什么的对象。存在各种不同类型的事件类用来描述各种类型的用户交互。
9.3.1 事件源
事件源是一个事件的产生者。例如,在Button组件上点击鼠标会产生以这个Button 为源的一个ActionEvent. 这个ActionEvent实例是一个对象,它是包含关于刚才所发生的那个事件的信息的对象。这些信息包括:
getActionCommand-返回与动作相关联的命令名称。
GetModifiers-返回在执行动作时持有的修饰符。
9.3.2 事件处理器
事件处理器就是一个接收事件、解释事件并处理用户交互的方法。
第四节 JDK1.0的事件模型与JDK1.2的事件模型比较
在JDK1.1中,事件接收和处理的方法发生了重要的改变。本节将比较以前的事件模型(JDK1.0)和当前的事件模型(JDK1.1和JDK1.2)。
JDK1.0采用的是层次事件模型,而JDK1.1以及更高的版本采用的是委托事件模型。
9.4.1 层次模型(JDK1.0)
层次模型是基于容器的。 事件先发送到组件,然后沿容器层次向上传播。没有被组件处理的事件会自动地继续传播到组件的容器。
JDK1.0的事件模型与JDK1.2的事件模型比较
例如,在下图中,Button对象(包含在一个Frame上的Panel中)上的鼠标点击首先向Button发送一个动作事件。如果它没有被Button处理,这个事件会被送往Panel,如果它在那儿仍然没有被处理,这个事件会被送往Frame。
层次模型(JDK1.0)(续)
这种模型有一个显著的优点:
它简单,而且非常适合面向对象的编程环境;说到底,所有的组件都继承了java.awt.Component类,而handleEvent()就在java.awt.Component类中。
然而,这种模型也存在缺点:
事件只能由产生这个事件的组件或包含这个组件的容器处理。这个限制违反了面向对象编程的一个基本原则:功能应该包含在最合适的类中。而最适合处理事件的类往往并不是源组件的容器层次中的成员。
大量的CPU周期浪费在处理不相关的事件上。任何对于程序来说不相关或者并不重要的事件会沿容器层次一路传播,直到最后被抛弃。不存在一种简单的方法来过滤事件。
为了处理事件,你必须定义接收这个事件的组件的子类,或者在基容器创建一个庞大的handleEvent()方法。
委托事件模型是在JDK1.1中引入的。在这个模型中,事件被送往产生这个事件的组件,然而,注册一个或多个称为监听者的类取决于每一个组件,这些类包含事件处理器,用来接收和处理这个事件。采用这种方法,事件处理器可以安排在与源组件分离的对象中。监听者就是实现了Listener接口的类。
事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口,规定哪些方法必须在适合接收那种类型的事件的类中定义。实现了定义那些方法的接口的类可以注册为一个监听者。
9.4.2 委托模型
从没有注册的监听者的组件中发出的事件不会被传播。
例如,这是一个只含有单个Button的简单Frame。
1.import java.awt.*;
2.
3.public class TestButton {
4.public static void main(String args[]) {
5.Frame f = new Frame(Test);
6.Button b = new Button(Press Me!);
7.b.addActionListener(new ButtonHandler());
8.f.add(b,Center);
9.f.pack();
10.f.setVisible(true);
11.}
12.}
ButtonHandler类是一个处理器类,事件将被委托给这个类。
1.import java.awt.ev
您可能关注的文档
- Smart-PC数据备份解决方案.doc
- SMED培训快速换模战培训.doc
- smt培训资料(全).doc
- SMT操机操作入门培训.doc
- SOD让人延缓衰老不再是梦.doc
- SolidWorks2006安装教程(图文).doc
- solidworks工程图转CAD格式教程.doc
- SORRY,SORRY罗马音歌词.doc
- SPA的表达、制备及鉴定.doc
- SPI串行通信协议.doc
- 2024秋五年级英语上册 Unit 3 What would you like课时6 Read and write-Let's wrap it up说课稿 人教PEP.docx
- 江苏省江阴市八年级历史上册 第12课 星星之火 可以燎原说课稿 新人教版.docx
- 2024年五年级品社下册《走进东北黑土地》说课稿1 未来版.docx
- 江苏省盐都市八年级历史上册 第三单元 第12课 星星之火%2C可以燎原说课稿 新人教版.docx
- 三年级语文下册 第六单元 19《剃头大师》说课稿 新人教版.docx
- 2024年春九年级语文下册 第五单元 15 诗词五首《黄鹤楼》说课稿 语文版.docx
- 三年级英语下册 Unit 1 Welcome back to school Part B第三课时说课稿2 人教PEP版.docx
- 九年级物理上册 第二章 改变世界的热机 第2节 内燃机说课稿 教科版.docx
- 2024年五年级数学上册 五 小数乘法和除法第4课时 一个数除以小数(1)说课稿 苏教版.docx
- 七年级生物下册 4.4.1《流动的组织——血液》说课稿 (新版)新人教版.docx
最近下载
- 蓝色商务风奋斗到底勇攀高峰PPT.pptx
- 第1章《国际心肺复苏和心血管急救指南》要览.docx
- (部编版)语文四年级上册“小古文”阅读理解训练72篇.doc
- 苏教版小学数学四年级上册 ● 运动与身体变化 教案.docx VIP
- 组会PPT-引入强增强改善DeiT的蒸馏[CVPR2024]DeiT-LT Distillation Strikes Back for Vision Transformer Training on L.pptx
- 01检查检验结果互认工作管理制度【附流程图等7个附件】.docx VIP
- 超声内镜课件.ppt
- 国际商务11版 英文习题TBChap008.docx
- 南京铁路南站地区控制性详规.pdf
- 《法律职业伦理》课程教学大纲.docx VIP
文档评论(0)