32.4 Java Event Model Review
A bean may communicate with other beans. The Java event delegation model provides the
foundation for beans to send, receive, and handle events. Let us review the Java event model
that was introduced in Chapter 16, “Event-Driven Programming.” The Java event model consists of the following three types of elements, as shown in Figure 16.3:
- The event object
- The source object
- The event listener object
一个bean可以同其他的bean交流。Java 时间委托模型提供bean发送,接收和处理事件的基础,让我们回顾16章“事件-驱动编程”中介绍的Java事件模型。Java时间模型由下列三种元素组成,如图16.3所示
An event is a signal to the program that something has happened. It can be triggered by external user actions, such as mouse movements, mouse button clicks, and keystrokes, or by the operating system, such as a timer. An event object contains the information that describes the event. A source object is where the event originates. When an event occurs on a source object, an event object is created. An object interested in the event handles the event. Such an object is called a listener. Not all objects can handle events. To become a listener, an object must be registered as a listener by the source object. The source object maintains a list of liteners and notifies all the registered listeners by invoking the event-handling method implemented on the listener object. The handlers are defined in the event listener interface. Each event class has a corresponding event listener interface. The Java event model is referred to as a delegation-based model, because the source object delegates the event to the listeners for processing.
一个事件对程序而言是发生某事的一个信号。它能被外部用户动作触发,如鼠标移动,鼠标按钮点击,击键盘,或者被操作系统,如一个定时器timer。事件对象包含描述事件的信息。产生事件的对象是源对象。当事件发生在源对象之上时,事件对象产生。对某事件感兴趣的对象处理该事件。这样的对象称为监听器。不是所有对象能处理事件。要成为一个监听器,对象必须被源对象注册成监听对象。源对象包含一监听列表且通过调用在监听器上执行的事件处理方法通知所有注册的监听器。每个事件类有对一个对应的事件监听接口。
Java事件模型称之为基于委托的模型,因为源对象委托事件给监听器处理。
32.4.1 Event Classes and Event Listener Interfaces
An event object is created using an event class, such as ActionEvent
, MouseEvent
, and
ItemEvent
, as shown in Figure 16.2. All the event classes extend
java.util.Event
Object
.
The event class contains whatever data values and methods are pertinent to the particular event type. For example, the Key Event class describes the data values related to a key event and contains the methods, such as getKeyChar(), for retrieving the key associated with the event.
一个事件对象有一个事件类创建,如ActionEvent
, MouseEvent
,和ItemEvent,如图16.2,所有的事件类继承于
java.util.Event对象。事件类包含特定事件类型相关的数据值和方法。例如,Key事件类描述相关key事件的数据值和包含方法如getKeyChar(),用于检索与key关联的事件。
Every event class is associated with an event listener interface that defines one or more
methods referred to as handlers. An event listener interface is a subinterface of java.util.EventListener
. The handlers are implemented by the listener components. The source component invokes the listeners’ handlers when an event is detected.
每个事件类关联一个事件监听器接口,定义一个或多个称为处理器的方法。一个事件监听接口是一个java.util.EventListener的子接口。处理器由监听器组件执行。当侦测到某事件发生时源组件调用监听器的处理器
。
Since an event class and its listener interface are coexistent, they are often referred to as an
event set or event pair. The event listener interface must be named as XListener for the
XEvent. For example, the listener interface for ActionEvent
is ActionListener
. The parameter list of a handler always consists of an argument of the event class type. Table 16.2 lists some commonly used events and their listener interfaces. Figure 32.2 shows the pair of ActionEvent and ActionListener.
由于一个事件类和它的监听器接口是共生的,它们经常称为一事件集或事件对。对XEvent而言,事件监听器接口必须命名为XListener。
例如,ActionEvent 的
监听接口是ActionListener。一个处理器的参数列表总会包含一个事件类类型参数。表16.2列出了一些常见使用的处理器和他们的监听器接口。图32.2显示了ActionEvent和ActionListener。
32.4.2 Source Components
The component on which an event is generated is referred to as an event source. Every Java GUI component is an event source for one or more events. For example, JButton
is an event source for ActionEvent
. A JButton
object fires a java.awt.event.ActionEvent
when it is clicked. JComboBox
is an event source for ActionEvent
and ItemEvent
. A JComboBox
object fires a java.awt.event.ActionEvent
and a java.awt.event.ItemEvent
when a new item is selected in the combo box.
在其上发生事件的组件称之为事件源。每个Java GUI组件是一个事件源对应一个或多个事件。例如,JButton 对ActionEvnt而言是一个事件源。JButton 被点击时对象触发一个java.awt.event.ActionEvent。JComboBox 对ActionEvent 和 ItemEvent来说是一个事件源。JComboBox对象触发java.awt.event.ActionEvent和java.awt.event.ItemEvent,当一个新的选项选入combo选择框中。
The source component contains the code that detects an external or internal action that triggers the event. Upon detecting the action, the source should fire an event to the listeners by invoking the event handler defined by the listeners. The source component must also contain methods for registering and deregistering listeners, as shown in Figure 32.3
源组件包含代码侦测到一个外部或内部触发事件的动作。根据触发动作,源通过调用由监听器定义的事件处理器,触发事件给监听器。源组件也必须包含方法注册和注销监听器,如图32.3所示。
32.4.3 Listener Components
A listener component for an event must implement the event listener interface. The object of
the listener component cannot receive event notifications from a source component unless the
object is registered as a listener of the source.
一事件的监听器组件必须执行事件监听接口。除非对象被注册成源的监听器,否则监听组件对象不能接收来至源组件的事件通知。
A listener component may implement any number of listener interfaces to listen to several
types of events. A source component may register many listeners. A source component may
register itself as a listener.
监听组件可以执行任意个监听接口来监听几种类型的事件。源组件可以注册多个监听器。源组件可以注册它自己成一个监听器。
Listing 32.1 gives an example that creates a source object (line 8) and a listener object (line
14), and registers the listener with the source object (line 17). Figure 32.4 highlights the relationship between the source and the listener. The listener is registered with the source by invoking the addActionListener
method. Once the button is clicked, an ActionEvent
is generated by the source. The source object then notifies the listener by invoking the listener’s actionPerformed
method.
代码片段32.1给出了一个创建一个源对象的例子(第8行)和一个监听对象(第14行),以及注册源对象的监听器(17行)。图32.4高亮出源和监听的关系。监听器由源调用addActionListener
方法注册。当button点击,源产生一个ActionEvent
。接着源对象调用监听器的actionPerformed
方法通知监听器。
import javax.swing.*;
import java.awt.event.*;
public classTestSourceListener {
public static void main(String[] args) {
JFrame frame = new JFrame("TestSourceListener");
// Create a source object
JButton jbt = new JButton("OK");
frame.add(jbt);
frame.setSize(200,200);
frame.setVisible(true);
// Create listeners
MyListener listener = newMyListener();
// Register listeners
jbt.addActionListener(listener);
}
}
/** MyListener class */
class MyListener implements ActionListener {
public void ActionPerformed(ActionEvent e){
System.out.println("I will process it!");
}
}
- 大小: 66.7 KB
- 大小: 44.9 KB
- 大小: 99.9 KB
分享到:
相关推荐
#### 三、JavaBean 的作用 1. **简化开发**:通过提供预定义的行为和属性,JavaBean 可以帮助开发者快速构建功能模块。 2. **提高代码质量**:良好的封装性和模块化特性使得 JavaBean 能够降低系统复杂度,提高代码...
三、JavaBean的序列化与持久化 JavaBean可以通过实现`java.io.Serializable`接口实现序列化,使得对象的状态能够被保存到磁盘或在网络上传输。这对于持久化存储、会话管理或远程方法调用(RMI)非常有用。 四、...
本课件“JavaBean学习课件1e”旨在帮助初学者深入理解和掌握JavaBean的核心知识。 一、JavaBean的基本特性 1. **属性**:JavaBean通常包含一组公共的、具有getter和setter方法的属性,用于封装数据。这些属性可以是...
3. 使用`<jsp:setProperty>`和`<jsp:getProperty>`标签设置和获取JavaBean的属性值。 4. 调用JavaBean的方法执行业务逻辑。 JavaBean的优势在于它们提高了代码的可复用性和可维护性。它们将数据和业务逻辑分离,...
3. 学习如何在Spring框架中使用JavaBean作为模型对象。 4. 实现属性变更监听器(PropertyChangeListener),以响应属性值的改变。 这个"JavaBean示例"将是一个很好的起点,帮助你掌握Java开发中的核心概念,并为...
这个“JavaBean课件.rar”压缩包文件显然包含了与JavaBean相关的教学材料,可能是PDF文档、PPT演示文稿、源代码示例或其他教育资源,用于帮助学习者理解和掌握JavaBean的概念和技术。 JavaBean是一种Java类,符合...
通过本实验,我们学习了如何使用JavaBean技术实现购物车系统的业务逻辑,包括商品信息的封装、工具JavaBean的实现和购物车逻辑的实现。这些技术可以广泛应用于Web应用开发,提高开发效率和质量。
3. **属性类型与数量**:JavaBean 的属性可以是任意Java类型,一个JavaBean可以有多个属性。例如,`User` 类可能包含 `username`、`password` 和 `hobby` 等属性。 4. **setter/getter 方法**:setter 方法(如 `...
通过这些课件,你可以系统地学习如何在JSP项目中引入、使用和管理JavaBean,进一步提升Web开发技能。同时,实践操作是巩固理论知识的关键,建议结合实际项目进行练习,以更好地理解和掌握JavaBean在JSP中的运用。
JavaBean是一种特殊的Java类,它遵循一定的规范,用于封装...这个名为“javabean”的压缩包文件,很可能是为了帮助你学习和实践JavaBean的编写和使用,通过阅读和分析其中的源码,你可以进一步深化对JavaBean的理解。
【jsp实时聊天系统与JavaBean学习详解】 在Web开发领域,构建实时聊天系统是一项常见的需求,它可以提升用户体验,实现用户间的即时交流。本教程将深入探讨如何利用JavaServer Pages(JSP)技术与JavaBean来创建一...
三、创建JavaBean 创建一个简单的JavaBean,例如一个表示学生的类: ```java public class Student { private String name; private int age; public Student() { } public String getName() { return name...
JavaBean操作类的学习是Java程序员必备的技能之一,它涉及属性设置、获取、事件处理等基本概念。以下是对JavaBean及其操作的详细解释: 1. **JavaBean规范**: - **命名规则**:通常,JavaBean的类名应该以"Bean...
在本文中,我们将深入探讨Web服务的学习,特别是关于Axis1框架如何处理复杂类型的JavaBean作为参数的传递。在Web服务的世界里, Axis1是一个广泛使用的开源工具,它允许开发者创建和部署SOAP(简单对象访问协议)...
JavaBean是Java编程语言中的...学习这个部分,开发者可以更好地理解和应用JavaBean,提升其在实际开发中的效率。通过深入理解JavaBean,不仅可以编写出易于维护和复用的代码,还能更好地与各种Java框架和服务进行集成。
3. **数据传递**:掌握如何在JSP页面和JavaBean之间传递数据,如通过HTTP请求参数或者使用session和application对象。 4. **MVC设计模式**:理解JSP和JavaBean如何共同实现MVC模式,提高代码结构和可维护性。 5. **...
3. **属性(Properties)**:JavaBean通常包含一组私有的(private)属性,用于存储数据。这些属性可以通过对应的getter和setter方法进行访问和修改。 4. **序列化(Serializable)**:为了实现持久化或者在网络间...
在这个实验中,学生将学习如何使用JavaBean封装数据,通过Servlet处理HTTP请求,以及DAO模式在数据库操作中的应用。此外,还将了解JavaScript客户端验证、JSP表达式和请求转发等Web开发技术。通过实践,学生能够更...