您所在位置: 网站首页 / 文档列表 / Delphi/Perl / 文档详情
SUNJAVA培训专用教材09.doc 立即下载
上传人:王子****青蛙 上传时间:2024-09-09 格式:DOC 页数:9 大小:118KB 金币:6 举报 版权申诉
预览加载中,请您耐心等待几秒...

SUNJAVA培训专用教材09.doc

SUNJAVA培训专用教材09.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

6 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

AWT事件模型本模块讨论了事件驱动的图形用户界面(GUI)的用户输入机制。第一节相关问题讨论-以下为与本模块内容有关的问题:哪些部分对于一个图形用户界面来说是必需的?一个图形化程序如何处理鼠标点击或者其他类型的用户交互?第二节目标完成本模块之后,你应当能够:编写代码来处理在图形用户界面中发生的事件描述Adapter类的概念,包括如何和何时使用它们根据事件对象的细节来确定产生事件的用户动作为各种类型的事件创建合适的接口和事件处理器。第三节什么是事件?什么是事件?事件-描述发生了什么的对象事件源-事件的产生器事件处理器-接收事件、解释事件并处理用户交互的方法如果用户在用户界面层执行了一个动作(鼠标点击和按键),这将导致一个事件的发生。事件是描述发生了什么的对象。存在各种不同类型的事件类用来描述各种类型的用户交互。9.3.1事件源事件源是一个事件的产生者。例如,在Button组件上点击鼠标会产生以这个Button为源的一个ActionEvent.这个ActionEvent实例是一个对象,它是包含关于刚才所发生的那个事件的信息的对象。这些信息包括:getActionCommand-返回与动作相关联的命令名称。GetModifiers-返回在执行动作时持有的修饰符。9.3.2事件处理器事件处理器就是一个接收事件、解释事件并处理用户交互的方法。第四节JDK1.0的事件模型与JDK1.2的事件模型比较JDK1.0的事件模型与JDK1.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)优点简单,而且非常适合面向对象的编程环境。缺点事件只能由产生这个事件的组件或包含这个组件的容器处理。为了处理事件,你必须定义接收这个事件的组件的子类,或者在基容器创建handleEvent()方法。层次模型(JDK1.0)(续)这种模型有一个显著的优点:它简单,而且非常适合面向对象的编程环境;说到底,所有的组件都继承了java.awt.Component类,而handleEvent()就在java.awt.Component类中。然而,这种模型也存在缺点:事件只能由产生这个事件的组件或包含这个组件的容器处理。这个限制违反了面向对象编程的一个基本原则:功能应该包含在最合适的类中。而最适合处理事件的类往往并不是源组件的容器层次中的成员。大量的CPU周期浪费在处理不相关的事件上。任何对于程序来说不相关或者并不重要的事件会沿容器层次一路传播,直到最后被抛弃。不存在一种简单的方法来过滤事件。为了处理事件,你必须定义接收这个事件的组件的子类,或者在基容器创建一个庞大的handleEvent()方法。委托事件模型是在JDK1.1中引入的。在这个模型中,事件被送往产生这个事件的组件,然而,注册一个或多个称为监听者的类取决于每一个组件,这些类包含事件处理器,用来接收和处理这个事件。采用这种方法,事件处理器可以安排在与源组件分离的对象中。监听者就是实现了Listener接口的类。事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口,规定哪些方法必须在适合接收那种类型的事件的类中定义。实现了定义那些方法的接口的类可以注册为一个监听者。9.4.2委托模型从没有注册的监听者的组件中发出的事件不会被传播。例如,这是一个只含有单个Button的简单Frame。1.importjava.awt.*;2.3.publicclassTestButton{4.publicstaticvoidmain(Stringargs[]){5.Framef=newFrame("Test");6.Buttonb=newButton("PressMe!");7.b.addActionListener(newButtonHandler());8
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

SUNJAVA培训专用教材09

文档大小:118KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
年会员
99.0
¥199.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用

手机号注册 用户名注册
我已阅读并接受《用户协议》《隐私政策》
已有账号?立即登录
我已阅读并接受《用户协议》《隐私政策》
已有账号?立即登录
登录
手机号登录 微信扫码登录
微信扫一扫登录 账号密码登录

首次登录需关注“豆柴文库”公众号

新用户注册
VIP会员(1亿+VIP文档免费下)
年会员
99.0
¥199.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用