当前位置:文档之家› 事件处理机制

事件处理机制


一、事件处理模型
事件的来源
事件的来源是用户的操作
每当用户在AWT组件上进行某种操作,例如用鼠标单
击按钮,敲击键盘等,AWT事件处理系统会生成一个
相应的事件对象 事件对象描述的是用户所执行的操作,用户操作不同, 事件对象的内容也会不同。
一、事件处理模型
事件的处理 事件的处理由事件处理程序完成 每个AWT组件都有自己的事件处理程序 当事件对象生成时,AWT事件处理系统就会将这个事
对事件进行具体的处理)分开。 一般情况下,组件(事件源)都不处理自己的事件,而是将事 件处理委托给外部的处理实体(监听器),这种事件处理模型称 为事件的授权处理模型。不同的事件,可以交由不同类型的监听 器去处理。
三、事件监听接口

用户操作引发的事件对象仍然传递给相应组件,组
件注册一个事件处理程序,这种事件处理程序称为
实现了相应的监听程序接口(Listener interface),
并且定义了事件对象的接收和处理方法。
三、事件监听接口
在委托事件处理模型中,Java根据不同的用户操作,产 生不同的事件类(Event),如窗口事件类(Window Event)、单击事件类(ActionEvent)等,并为每个事 件类定义了事件监听程序(Listener) 这些事件监听程序的声明在对应的监听程序接口中,例如 WindowListener、ActionListener等。
1
事件处理器
一、事件处理模型
不同的事件源上可能发生不同的事件:例如一个按钮能够发
生ActionEvent类型的事件,而一个窗口能够发生
WindowEvent类型的事件
同一个事件源上可能发生多种事件:例如在Canvas对象上
既可能发生鼠标事件,也可能发生键盘事件 java采取授权处理机制(Delegation Model):事件源可 以把在其自身所有可能发生的事件分别授权给不同的事件处 理者来处理。
NCEPU
三、事件监听接口
AWTEvent事件类
Java在java.awt.event包中定义了许多事件类,用来
处理各种用户操作所产生的事件,它们的父类都是
java.awt包中的AWTEvent类。
Java中的每个事件类都有一个对应的接口,接口中声明
了一个或多个抽象的事件处理方法,凡是需要接收并处理
KeyEvent
ActionListener中的actionPerFormed()方法。若要接收处
KeyListener keyPressed 键盘输入
keyReleased 理某一个事件类,必须实现相应的接口。 keyTyped
FocusEvent
FocusListener
focusGained focusLost
组件得到或失去焦 点
……
……
……
……
三、事件监听接口
为了进行事件处理,需要创建实现Listener接口 的类 在某些Listener接口中,声明了很多抽象方法, 为了实现这些接口,需要一一实现这些方法。
三、事件监听接口
例如:在WindowListener接口中,声明了:
windowClosing(WindowEvent e)
三、事件监听接口
事件处理者(监听器)通常是一个类,负责处理一类事件 该类如果要能够处理某种类型的事件,就必须实现与该事件
类型相对应的接口。
例如下例中类ButtonHandler之所以能够处理
ActionEvent事件,原因在于它实现了与ActionEvent 事件对应的接口ActionListener。每个事件类都有一个与 之相对应的接口。
事件的监听程序(Listener)。
三、事件监听接口
JDK 1.1使用的委托事件处理模型的基本思想是
用户操作引发的事件仍然传递给相应的组件
为了接收事件对象并进行事件处理,组件必须注册一个事 件处理程序(事件监听程序Listener)。 事件监听程序可以定义在组件所在的类中,也可以定义在 其他类中。对事件的处理,由组件委托给事件监听程序所 在的类来完成。
windowClosed(WindowEvent e) windowOpened(WindowEvent e) windowActivated(WindowEvent e) windowDeactivated(WindowEvent e) windowIconified (WindowEvent e) windowDeiconified(WindowEvent e)
第9章 事件处理机制
课程内容
一 二 三 四 事件处理模型
事件类
事件监听接口 适配器 项目学做


为学生信息管理管理系统设计一个登陆界面,接受用户输入 的账号和密码。界面如图所示:
所需要的知识点 常用组件和容器的使用方法及功能 AWT事件处理模型
一、事件处理模型
设计一个图形界面,不仅仅需要画出窗口并添加组件,
更重要的是为组件设计相应程序,使组件能够响应并处理
用户的操作,例如单击按钮,等等 当Java程序运行时,如果用户在界面上进行某种操作, 系统捕获这些操作会引发相应的事件(Event),然后执 行相应的事件处理程序。 Java中定义了许多事件类,用来描述不同的用户行为
一、事件处理模型
在事件处理的过程中,主要涉及三类对象: Event-事件:用户对界面操作在java语言上的描述,以 类的形式出现,例如键盘操作对应的事件类是 KeyEvent。 Event Source-事件源:事件发生的场所,通常就是各 个组件,例如按钮Button。 Event handler-事件处理者:接收事件对象并对其进行 处理的对象。
三、事件监听接口
事件的监听程序可以定义在组件所在的类中,也可以 定义在其他的类里; 而对事件的处理,则由组件委托给事件监听程序所在 的类来完成。
三、事件监听接口
在委托事件处理模型下,事件对象只被传递给已经注册的 监听程序。 根据用户操作的不同,事件也被分成不同类型。 每种事件都有一个对应的监听程序类,这个监听程序类应
事件对象的类,多需要实现相应的接口
三、事件监听接口
EventObject类的主要方法
public Object getSource() //获得产生事件的组件
ActionEvent类的主要方法
public String getActionCommand() //获得按钮的 标签
三、事件监听接口
四、适配器
在实际编程中,我们经常关心的是接口中的个别 方法,为了编程方便,Java为那些声明了多个方 法的Listener接口,提供了一个对应的 (Adapter)类 适配器
NCEPU
第二节 委托模型
import java.awt.*; import java.awt.event.*; public class TestButton implements ActionListener { public static void main (String args[]){ (new TestButton()).go(); } public void go () {…… b.addActionListener(this); …… } public void actionPerformed (ActionEvent e) { System.out.println("Action occurred"); } }
事件类
java.awt.event包中的每个事件类都有一个对应的接口,
ActionListener actionPerformed(A 单击按钮,文本行中
表框选择菜单项
接口
方法
说明
ActionEvent
单击回车键,双击列 单击事件类 接口中声明了一个或多个抽象的事件处理方法,如 ctionEvent e)
一、事件处理模型
授权模型把事件的处理委托给外部的处理实体 进行处理,实现了将事件源和监听器分开的机制。
一、事件处理模型
事件,就是发生在用户界面上的用户交互行为而产生的 一种效果,如鼠标的各种件,程序都需要作出相应的响应,这称为 事件处理。
事件
•ACTION 事件(按动按钮等) •int id 事件的类型 Button2
•列表框事件( 在列表框中进行选择 ) int x, y 事件产生的坐标位置
•滚动条事件( 按动其中的向上或向下按钮 ) •Object arg 与具体事件有关的参数
三、事件监听接口
所有的组件都从Component类中继承了将事件处理授权给 监听器的方法: 在JDK1.1中,事件处理模型将事件源(产生事件的组件)和对 addXXXListener(ListenerType listener) 事件作出的具体处理(利用一种称为监听器 [Listener] 的实体来 removeXXXListener(ListenerType listener)
•窗口事件(移动窗口、关闭窗口等) 描述, Event是java.awt中定义的一个类, •鼠标事件(移动鼠标、按下鼠标键等) 它有如下几个成员变量:
Panel •焦点事件(获得焦点、失去焦点) •Object target 事件涉及的组件
Button1 •键盘事件(按下或松开键) •long when 事件发生的时间 Frame
三、事件监听接口
对于某种类型的事件XXXEvent, 要想接收并处理这类事件, 必须定义相应的事件监听器类,该类需要实现与该事件相对 应的接口XXXListener。 进行授权,注册该类事件的监听器,使用 思考:可不可以用一
个类本身实现监听器?
addXXXListener(XXXListener ) 方法来注册监听器。 b.addActionListener(new ButtonHandler());
相关主题