7.4+Java的事件处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.4.3 文本事件(TextEvent)的处理 文本事件(TextEvent)的处理
TextEvent类只包含一个事件,即代表文本区域中 类只包含一个事件, 类只包含一个事件 文本变化的事件TEXT-VALUE-CHANGED,在文 , 文本变化的事件 本区域中改变文本内容。例如,删除字符、 本区域中改变文本内容。例如,删除字符、键入 字符都将引发这个事件。这个事件比较简单,不 字符都将引发这个事件。这个事件比较简单, 需要特别判断事件类型的方法和常量。 需要特别判断事件类型的方法和常量。 Java中用于文本处理的基本组件有两种:单行文本 中用于文本处理的基本组件有两种: 中用于文本处理的基本组件有两种 框TextField和多行文本区域 和多行文本区域TextArea,它们都是 , TextComponent的子类。 的子类。 的子类
7.4.4 选择事件(ItemEvent)的处理 选择事件(ItemEvent)的处理
ItemEvent类只包含一个事件,即代表选择项的选 类只包含一个事件, 类只包含一个事件 中状态发生变化的事件ITEM-STATE-CHANGED。 。 中状态发生变化的事件 引发这类事件的动作包括: 引发这类事件的动作包括: (1) 改变列表类 改变列表类 列表类List对象选项的选中或不选中状态。 对象选项的选中或不选中状态 对象选项的选中或不选中状态。 (2) 改变下拉列表类 改变下拉列表类 下拉列表类Choice对象选项的选中或不选中 对象选项的选中或不选中 对象 状态。 状态。 复选按钮类Checkbox对象的选中或不选中状 对象的选中或不选中状 (3) 改变复选按钮类 改变复选按钮类 对象 态。 (4) 改变检测盒菜单项 改变检测盒菜单项CheckboxMenuItem对象的选 对象的选 中或不选中状态。 中或不选中状态。
ItmeEvent类的主要方法有: ItmeEvent类的主要方法有:
(1) public ItemSelectable getItemSelectable( ) 此方法返回引发选中状态变化事件的事件源,包括List 此方法返回引发选中状态变化事件的事件源,包括 对象、 对象、 对象等。 对象、Choice对象、Checkbox对象等。 对象 对象等 (2) public Object getItem( ) 此方法返回引发选中状态变化事件的具体选择项, 此方法返回引发选中状态变化事件的具体选择项,例如 用户选中的Choice中的具体 中的具体item,通过调用这个方法可 用户选中的 中的具体 , 以知道用户选中了哪个选项。 以知道用户选中了哪个选项。 (3) public int getStateChange( ) 此方法返回具体的选中状态变化类型, 此方法返回具体的选中状态变化类型,它的返回值在 ItemEvent类的几个静态常量列举的集合之内: 类的几个静态常量列举的集合之内: 类的几个静态常量列举的集合之内 ① ItemEvent.SELECTED: 代表选项被选中。 : 代表选项被选中。 ② ItemEvent.DESELECTED: 代表选项被放弃不选。 : 代表选项被放弃不选。
)—当动作 (2) public int getModifiers( ) 当动作 是同时与功能键配合使用时, 是同时与功能键配合使用时,获得引发事件 的组合键信息, 的组合键信息,如:ALT_MASK
ActionListener, 动作事件对应的事件监听器是 ActionListener, 其主要方法是: 其主要方法是: actionPerformed( e) actionPerformed(ActionEvent e) —发生动作 发生动作 事件时被调用 实现动作事件的操作过程是: 实现动作事件的操作过程是: 1)注册动作事件监听器 addActionListener(ActionListener) addActionListener(ActionListener) 实现ActionListener接口的方法: ActionListener接口的方法 2) 实现ActionListener接口的方法: actionPerformed( e) actionPerformed(ActionEvent e)
AWTEvent类体系结构图 AWTEvent类体系结构图
EventObject AWTEvent ActionEvent TextEvent
AdjustmentEvent ComponentEvent ItemEvent
ContainerEvent FocusEvent InputEvent
WindowEvent PaintEvent
Java的委托事件模型 Java的委托事件模型
JAVA的事件处理机制 JAVA的事件处理机制
JDK1.1开始引入了委托事件模型, JDK1.1开始引入了委托事件模型,不同的事件源 开始引入了委托事件模型 可产生不同种类的事件, 可产生不同种类的事件,不同的事件由不同的监 听者处理。事件发生后,事件源将事件对象发给 听者处理。事件发生后, 已经注册的所有监听者; 已经注册的所有监听者;监听者对象随后会根据 事件对象内封装的信息, 事件对象内封装的信息,决定自己该如何响应这 个事件。 个事件。
7.4 Java的事件处理 Java的事件处理
7.4.1 基本概念 事件处理三要素:事件源、事件类型、 事件处理三要素:事件源、事件类型、事件监听者 事件源:图形用户界面的每个可能产生事件的组件。 事件源:图形用户界面的每个可能产生事件的组件。 事件源可以注册监听者对象,并向其发送事件对象。 事件源可以注册监听者对象,并向其发送事件对象。 事件类型: Java的所有事件都封装成一个类 的所有事件都封装成一个类, 事件类型: Java的所有事件都封装成一个类,这些 事件类被集中在java.awt.event包中, java.awt.event包中 事件类被集中在java.awt.event包中,所有的事件类 都继承了AWTEvent类的一个方法getsSource() AWTEvent类的一个方法getsSource(), 都继承了AWTEvent类的一个方法getsSource(),该方 法返回所发生事件的对象。 法返回所发生事件的对象。 事件监听者:不同类型的事件发生后, 事件监听者:不同类型的事件发生后,由事件监听者 接收事件并调用相应的事件处理方法。 接收事件并调用相应的事件处理方法。 监听者对象:实现了监听者接口的类的实例, 监听者对象:实现了监听者接口的类的实例,具有监 听和处理某类事件的功能。 听和处理某类事件的功能。
public void textValueChanged(TextEvent e) { if(e.getSource()==tf) ta.setText(((TextField)e.getSource()).getText()); } public void actionPerformed(ActionEvent e) { if(e.getSource()==tf) ta.setText(""); } }
例 7-10 TestChoice.java
import java.applet.*; import java.awt.*; import java.awt.event.*; public class TestChoice extends Applet implements ItemListener { Choice size; Button btn; public void init() { size = new Choice(); size.add("10"); size.add("14"); size.add("18"); add(size); btn = new Button("效果 效果"); 效果 add(btn); size.addItemListener(this); }
例 7-7 TextComponentEvent.java
import java.applet.*; import java.awt.*; import java.awt.event.*; public class TextComponentEvent extends Applet implements TextListener,ActionListener { TextField tf; TextArea ta; public void init() { tf = new TextField(45); ta = new TextArea(10,45); add(tf); add(ta); tf.addActionListener(this); tf.addTextListener(this); }
7.4.2 动作事件(ActionEvent )的处理 动作事件(ActionEvent )的处理
能够触发动作事件的动作有: 能够触发动作事件的动作有: 动作事件的动作有 – 点击按纽 – 双击一个列表框中的选项 – 选择菜单项 – 在文本框中输入回车 动作事件对应的事件类是ActionEvent ActionEvent类 动作事件对应的事件类是ActionEvent类,其主要方法 有: )—获得引发 (1) public String getActionCommand( ) 获得引发 事件的项目信息 例:public void actionPerformed(ActionEvent e) { if ( e.getActionCommand( ) == ″按钮标签″ ) … }
MouseEve一般说来,每个事件类都有一个监听者接口与 一般说来,每个事件类都有一个监听者接口与 事件类都有一个监听者接口 之对应,而事件类中的每个具体事件类型都有 之对应,而事件类中的每个具体事件类型都有 一个具体的抽象方法与之相对应 与之相对应, 一个具体的抽象方法与之相对应,当具体事件 发生时, 发生时,这个事件将被封装成一个事件类的对 象作为实际参数传递给与之对应的具体方法, 象作为实际参数传递给与之对应的具体方法, 由这个具体方法负责响应并处理发生的事件。 由这个具体方法负责响应并处理发生的事件。 例如: ActionEvent类事件对应的接口是 例如:与ActionEvent类事件对应的接口是
ActionListener,这个接口定义了抽象方法: ActionListener,这个接口定义了抽象方法: actionPerformed(ActionEvent e); public void actionPerformed(ActionEvent e);
凡是要处理ActionEvent事件的类都必须 凡是要处理ActionEvent事件的类都必须: 处理ActionEvent事件的类都必须: 1)实现ActionListener接口 实现ActionListener 1)实现ActionListener接口 2)重载actionPerformed( 2)重载actionPerformed()方法 重载actionPerformed() 在重载的方法体中,常需要调用参数e 在重载的方法体中,常需要调用参数e的有关方 如调用e.getSource查明ActionEvent e.getSource查明ActionEvent事件的 法,如调用e.getSource查明ActionEvent事件的 事件源,然后采取相应的措施处理该事件。 事件源,然后采取相应的措施处理该事件。 事件适配器(Adapters) 事件适配器(Adapters) 定义Listener时可以继承Adapters类 定义Listener时可以继承Adapters类,这样只需 Listener时可以继承Adapters 要重写自己需要的方法,其他方法不必实现, 要重写自己需要的方法,其他方法不必实现,可 以减少不必要的工作量。 以减少不必要的工作量。