java认证所有课程

2星(超过40%的资源)
所需积分/C币:9 2009-08-27 15:13:59 126KB APPLICATION/MSWORD
17
收藏 收藏
举报

第9章 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.} 1

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
cldej 内容太少,不是我要找的
2013-01-21
回复
majunwenman 怎么只有第9章的呢?还行
2013-01-11
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享达人

关注 私信
上传资源赚钱or赚积分
最新推荐
java认证所有课程 9积分/C币 立即下载
1/0