JAVA事件概述

Java对事件的处理采用授权的事件模型,也成为委托事件模型。在这个模型下,每个组件都有相应的事件,如按钮单击事件,文本域具有内容改变事件等。当某个事被触发后,组件就会将事件发送给组件注册的每一个事件监听器,事件监听器中定义了与不同事件相对应的事件的处理,此时事件监听器会根据不同的事件信息调用根据不同的事件信息调用不同的事件处理者,完成对这次事件的处理,只有向组件注册的事件监听器才会受到事件信息。此种模型的显著特点是,当组件被触发后,本身不去处理,而将处理的操作交给第三方来完成。例如,在GUI单击了一个按钮,此时按钮就是一个事件源对象,按钮本身没有权利对这次单击做出反应,它做的就是将信息发给本身注册的监听器(事件处理者,实质上也是个类)来处理。

如果要理解Java的事件处理者,需要掌握下面几个概念:事件、事件源和监听器(事件处理者)。首先回答"什么是事件"这一基本概念。在授权事件模型中,事件是一个描述事件源状态改变的对象。通过鼠标、键盘与GUI直接或间接交互都会产生事件,按回车键、单击按钮、在一个下拉列表中选择一个选项等操作。程序有时需对发生的事件作出反应来实现特定的任务。例如,用户单击"单击"或"取消"按钮,程序就可能将作出不同的反应。

其实事件本身就是一个抽象的概念,它是表现另一对象状态变化的对象。在面向对象的程序设计中,事件消息是对象间通信的基本方式。在图形用户界面程序中,GUI组件对象根据用户的交互产生各种类型的事件消息,这些事件消息由应用程序的事件处理代码捕获,在进行相应的处理后驱动消息响应对象作出反应。当在图形化用户界面上进行操作的时候,单击某个可响应的事件,如按钮、菜单,都会期待某个事件的发生。其实围绕GUI的所有活动都会发生事件,但Java事件处理机制却可以让人们挑选出需要处理的事件。事件在Java中与其他对象基本是一样,但有一点不同的是,事件是由系统自动生成并自动传递到适当的事件处理程序中。

事件是由事件源产生,事件源可以是GUI组件、JavaBen或由生成事件能力的对象。在GUI组件的情况下,事件源是组件的同位体(对于AWT组件来说)或租金本身(对于Swing组件来说),即事件源是一个生成事件的对象,如常见的按钮、文本框、菜单等。一个事件源可能会生成不同类型的事件,如文本框事件源可以产生不同类型的事件,如文本框事件源可以产生内容改变事件和回车事件。事件源提供了一组方法,用于为事件注册一个或多个监听器。每种事件的类型都有其自己的注册方法。一般形式为:

public void add<EventType>Listener(TypeListener e)

事件发生后,组件本身并不处理,需要交给监听器(另外一个类)来处理。实际上监听器也可称为事件处理者。监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为"监听器接口"。监听器负责处理事件源发生的事件,监听器是一个对象,为了处理事件源发生的事件,监听器会自动调用一个方法来处理事件.对每个明确的事件的产生,都相应地定义一个明确的Java方法。这些方法都集中定义事件监听器接口中,这个接口要继承java.util.EventListener。实现了事件监听器接口中一些或全部方法的类就是事件监听器。

伴随着事件的发生,相应的状态通常都封装在事件状态对象中,该对象必须继承自java.util.EventObject。事件状态对象作为参数传递给响应该事件的监听者方中。产生某种特定事件源的标识是:遵从规定的设计格式为事件监听器定义注册方法,接收或者还有其他的额外操作时,就要在一个源与其他一个或多个监听器之间插入一个事件适配器类的实例来建立他们之间的联系。

原文地址:https://www.cnblogs.com/canyangfeixue/p/2475991.html