java第8章.pptVIP

  • 9
  • 0
  • 约5.7千字
  • 约 33页
  • 2017-08-24 发布于河南
  • 举报
第8章 Java 事件 具体来说,事件监听器实现java.util.EventListener接口,不管这个接口只是标示接口(Marker Interface),其中并没有规定必须实现的方法。对于Java SE GUI成员而言,相对应的事件监听器主要位于java.awt.event与javax.swing.event包之下,它们都是EventListener接口。 Java的图形用户界面,可以使用AWT或Swing类库创建,同样二者都可以创建Java事件处理程序。Swing类库包的创建是建立在AWT类库包基础之上的,故AWT的事件基本都可以在Swing图形界面上,直接使用。 Java语言为一些Listener接口提供了相应的适配器(Adapter)类。事件适配器提供了一种简单的实现监听器的手段,可以缩短程序代码。但是,由于Java的单一继承机制,当需要多种监听器或此类已有父类时,就无法采用事件适配器。可以通过继承事件所对应的Adapter类,重写需要方法,而无关方法不用实现。 这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。它还创建那个类的一个新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口都是new语句的操作数,后跟匿名类的主体。如果匿名类对另一个类进行扩展,它的主体可以访问类的成员、覆盖它的方法等等,这和其他任何标准的类都是一样的。如果匿名类实现了一个接口,它的主体必须实现接口的方法。 * * 窗内网,免费看视频,轻松学编程 8.1 Java事件处理机制 Java对事件的处理采用委托事件模型(Delegation Event Model)。 事件被传送至对应的组件,而组件会将事件传播至每一个事件监听器(Event Listener),事件监听器中定义了与不同事件对应的事件处理者(Event Handler),只有向组件注册的事件监听器才会收到事件。 这种模型,事件发生时是委托事件处理者进行处理,事件处理者与组件的设计可以分别独立。 8.1.1 事件处理模型 当用户在Java GUI界面进行一些操作时,例如,移动鼠标、选取菜单项目等,将会引发相关事件(Event)的发生。在Java中事件以具体的对象来表示,用户的相关动作会由JVM建立相应的事件,用以描述事件来源、发生了什么事以及相关的消息,可以通过捕获对应的事件,以进行对应的操作来完成应用程序的功能。 8.1.1 事件处理模型 事件处理流程 Java对事件的处理采用授权事件模型,也称为委托事件模型(Delegation Event Model)。在这个模型下,每个组件都有相应的事件,如按钮具有单击事件,文本域具有内容改变事件等。当对于某个组件的事件被触发后,组件就会将事件发送给组件注册的每一个事件监听器(EventListener),事件监听器中定义了与不同事件相对应的事件处理者,此时事件监听器会根据不同的事件信息调用不同的事件处理者,完成对这次事件的处理。只有向组件注册的事件监听器才会收到事件信息。此种模型的显著特点是,当组件被触发事件后,本身不去处理,而将处理的操作交给第三方来完成。例如,当我们在GUI界面单击了一个按钮信息,此时按钮就是一个事件源对象,按钮本身没有权利对这次单击做出反应,需要做的就是将信息发送给本身注册的监听器(事件处理者,实质上也是个类)来处理。 8.1.1 事件处理模型 事件处理元素 在事件处理的过程中,主要涉及三类对象,分别为事件、事件源和事件处理者。 图8-1 事件运行流程 8.1.2 为组件注册事件 使用授权处理模型进行事件处理的一般方法归纳如下: (1)对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener; (2)事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener)方法来注册监听器。 8.1.2 为组件注册事件 事件类型 java.util.EventObject类是所有事件对象的基础父类,所有事件都由它派生出来。AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件。 低级事件是指基于组件和容器的事件,当一个组件上发生事件,如:鼠标的进入,点击,拖放等,或组件的窗口开关等,触发了组件事件。 高级事件是基于语义的事件,它可以不和特定的动作相关联,而依赖于触发此事件的类,如在TextField中按Enter键会触发ActionEvent事件,滑动滚动条会触发AdjustmentEv

文档评论(0)

1亿VIP精品文档

相关文档