正在加载图片...
层次模型(JDK1.0)(续) 这种模型有一个显著的优点: 它简单,而且非常适合面向对象的编程环境:说到底,所有的组件都继承了javaawt.componenT类,而handleevent 就在 java. awt. Component类中。 然而,这种模型也存在缺点: 事件只能由产生这个事件的组件或包含这个组件的容器处理。这个限制违反了面向对象编程的一个基本原则 功能应该包含在最合适的类中。而最适合处理事件的类往往并不是源组件的容器层次中的成员。 大量的CPU周期浪费在处理不相关的事件上。任何对于程序来说不相关或者并不重要的事件会沿容器层次一路 传播,直到最后被抛弃。不存在一种简单的方法来过滤事件。 为了处理事件,你必须定义接收这个事件的组件的子类,或者在基容器创建一个庞大的 handleevent0方法。 委托事件模型是在JDKL.1中引入的。在这个模型中,事件被送往产生这个事件的组件,然而,注册一个或多个称为 监听者的类取决于每一个组件,这些类包含事件处理器,用来接收和处理这个事件。采用这种方法,事件处理器可以安 排在与源组件分离的对象中。监听者就是实现了 Listener接口的类 Frame Panel and Frame event handlers Acton event ction handler actionPerformed (ActionEvent e)t 事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口,规定哪些方法必须在适合接收那种类 型的事件的类中定义。实现了定义那些方法的接口的类可以注册为一个监听者 942委托模型 从没有注册的监听者的组件中发出的事件不会被传播。 例如,这是一个只含有单个 Button的简单 Frame 1. import java. awt.* 4. public static void main(String args[]) i 6. Button b= new Button(Press Me!)i 10.f. setvisible(true)i Button handler类是一个处理器类,事件将被委托给这个类 3.public class ButtonHandler implements ActionListener 4. public void actionPerformed(ActionEvent e)t106 层次模型(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.event.*; 2. 3.public class ButtonHandler implements ActionListener { 4.public void actionPerformed(ActionEvent e) {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有