Java的事件处理模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当窗口在一系列窗口之前,成为当前窗口时执 行,当打开窗口、还原窗口或点击某个窗口到 前台都会调用该方法。
windowDeactivated 当某个窗口从前台移走时,例如图标化、关闭 窗口或另外一个窗口被激活等, windowClosed 当窗口关闭之后,如单击关闭按钮或执行了窗 口的dispose方法后执行 8
18
例程 8-9
19
四、键盘事件的处理
产生条件: 当用户按下或释放一个键时
键盘事件的表示: 1)从KeyEvent类创建的对象表示键盘事件。
监听类: 键盘监听器 2)表示:它们由实现KeyListener界面的对象代 表。 3)必须实现的方法:对应三种键盘事件, KeyListener指定了三个必须实现的方法: keyPressed、keyReleased、keyTyped。 4)注册一个键盘事件源:调用组件的 addKeyListener方法。
各种类型的事件均有对应的事件处理器接口。
3
8.5.1事件处理模型
基于授权事件模型: 1. 当事件来源对象S因用户的操作(鼠标或键盘) 2. 系统会自动触发此事件类对象E,并通知所授 权的事件监听者L(需事先调用来源对象的 addXxxListener方法向L注册), 3. 事件监听者L中有处理各种事件的方法(事件 处理者1~n)便会处理此事件E的各种状况 。
2) 由实现了WindowListener接口 的Frame子类对象表示窗口监听器 4)注册一个窗口事件源
例程8-13
两个小 错误
1)从WindowEvent类创 建的对象表示窗口事件 3) 7种必须实现的方法
9Leabharlann 窗口事件的处理Window类的dispose()方法: Releases all of the native windowClosed方法的代码是否被调用的诀窍 screen resources used by this Window, its 注意,若在windowClosing方法中直接调用 subcomponents, and all of System.exit方法,将不会调用windowClosed方 its owned children 法,如果不在乎windowClosed方法中的代码,可
15
例程 8-8
如果输入的不是数 字,则焦点将被调 回到numField
16
8-8运行结果
输入“111”,将鼠标移到第二个框
输入“aaaaaa”,将鼠标移到第二个框
17
三、项目事件的处理
产生条件: 当用户选择一个单选按钮、复选框、复选框菜 单项或者选择列表框、下拉列表框(选择列表 )中的项目时, 焦 点 事 件 的 表 1)从ItemEvent类创建的对象表示项目事件 示: 监听类: 2)表示:它们由实现了ItemListener接口的对 象表示。 项目监听器 ItemListener 3)必须实现的方法: ItemListener仅指定了 一个必须实现的方法ItemStateChanged。 4)注册一个项目事件源:需要调用组件的 addItemListener方法。
窗口事件的处理 一、行为事件的处理 二、焦点事件的处理 三、项目事件的处理 四、键盘事件的处理 五、鼠标事件的处理 六、文本事件的处理
6
窗口事件的处理
产生条件: 当一个窗口被激活、撤消激活、打开、关闭、图 标化或撤消图标化时 窗口事件的表示: 1)从WindowEvent类创建的对象表示窗口事件 监听类: 2)表示:由实现了WindowListener接口的对象来 表示窗口监听器。 窗口监听器 WindowListener 3)必须实现的方法: WindowListener接口指定 了7种必须实现的方法,分别对应窗口的7种不同 事件种类。 4)注册一个窗口事件源,需要调用组件的 addWindowListener方法。
11
一、 行为事件的处理
产生行为事件时,用户可以按住Alt、Ctrl、Meta或Shift等 四个修改键,以便使同一个按钮实现不同的事情处理。 ActionEvent类提供了getModifiers方法返回标识所有按下的 修改键的整数值,通过与ActionEvent类成员常量ALT_MASK、 CTRL_MASK、META_MASK和SHIFT_MASK进行位与运算,就可以 在按钮或菜单项的事件处理程序中根据结果是否非零判别 是否按下了修改键。
22
例程 8-11
更正:首个字母小写
加“e.”
23
六、文本事件的处理
产生条件: 当一个文本框或文本域的内容发生改变时,
文本事件的表示: 1)从TextEvent类产生的对象可以表示文本事件。
监听类: 文本监听器 TextListener
2)表示:它们由实现TextListener接口的对象 来表示。 3)必须实现的方法: TextListener只指定了一 个必须实现的方法textValueChanged。 4)注册一个文本事件源:必须调用组件的 addTextListener方法。
2
一、 AWT事件处理的基本概念和流程
1.事件源。
即用户在各种场合进行的各项操作,如敲击 键盘或用鼠标点击某个组件等。
2.事件对象。
对于不同的事件源,Java虚拟机会产生相应 类型的事件对象。 该接口封装了与其对应类
Java自动识别各种不同的事件对象的类型并进行分类处理。 型事件的各种处理方法, 并建立了事件到相应处理 3.事件处理(监听)器接口。 方法的自动映射。
24
两处小错误
例程 8-12
运行效果:文本框里的字母不能超过8个
25
8.5.3 事件监听器的挂接和适配器
1. 事件监听器的挂接 同一个组件可以加上多个事件监听器,同 一个事件监听器也可以在同一组件上添 加/删除多次。
26
例程8-14
27
运行结果
点OK一次
点cancel一次 28
1. 适配器
14
二、焦点事件的处理
焦点的改变可以是暂时的也可以是永久的。 当一窗口出现在另一个窗口的前面时,这个焦点改变是暂时的。 当鼠标单击文本域或使用Tab键切换到另一个组件时, 焦点改变是永久的。 FocusEvent类的isTemporary方法返回是否为暂时改变。 当第一个焦点事件发生时,获取焦点的组件会调用 focusGained方法。通常是第一个加入容器的组件能够首先 获得焦点。对于接下来的焦点事件,失去焦点的组件调用 focusLost,然后获取焦点的组件调用focusGained。
10
一、 行为事件的处理
产生条件:
按钮被按下、单行文本框中的回车、列表 框的某项被双击或一个菜单项被选中 行为事件的表示: 从ActionEvent类生成一个对象 1)
监听类: 2)表示:由实现了ActionListener接口的对象表 示行为监听器。 行为监听器 ActionListener 3)必须实现的方法: acitonPerformed 4)注册一个行为事件源:需要调用组件的 addActionListener方法。 5)撤销一个行为事件源:使用组件的 removeActionListener方法
很多事件监听器接口中定义了很多抽象方法,我 的程序中可能只用到其中的一个或几个, 但根据语法规则,实现接口时需要把其中定义的 方法都要实现,对程序中不用的方法也需要填 进空语句。 例子: 有象WindowListener接口,有7个方法,而很多 程序中可能只用到其中的windowClosing方法, 以便写上窗口右上角的关闭按钮的关闭程序功 能。这样就使程序编写显得非常麻烦。
12
例程 8-7
效果:鼠标放到三个按 钮上的形状分别为指针, 十字架和文本
播放相应的声音文件 (演示:如何看懂帮助)
ac 注意:Applet的运行方式!需将编译好的类文件嵌入到一个网页中 13 声音文件要放到与网页文件的同一目录下
二、焦点事件的处理
产生条件: 当一个组件得到或失去焦点时,发生焦点事件 例如用户在对话框中从一个组件移到另外一个 组件进行操作时 这些组件只有一个能够得到焦点 焦点事件的表示: 由从FocusEvent类创建的对象来表示 1) 监听类: 2)表示:由实现了FocusListener接口的对象表 示行为监听器。 焦点监听器 FocusListener 3)必须实现的方法:两个必须实现的方法, focusGained和focusLost 4)注册一个行为事件源:需要调用组件的 addFocusListener方法。
20
例程 8-10
更正:首个字母小写
21
五、鼠标事件的处理
产生条件: 当用户按下鼠标、释放鼠标或移动鼠标指针时
鼠标事件的表示: 1)从MouseEvent类创建的对象表示鼠标事件。 监听类: 2)表示:鼠标按钮相关事件监听器由实现 两个鼠标监听器 MouseListener接口的对象表示,而鼠标移动相 MouseListener 关事件监听器则由实现MouseMotionListener接 口的对象表示 和 MouseMotionLis 3)必须实现的方法:其中。MouseListener指定5 个必须实现的方法,他们是MouseClicked、 tener MouseEntered、MouseExited、MousePressed和 MouseReleased。MouseMotionListener指定两种 必须实现的方法,MouseDragged和MouseMoved。 4)注册一个鼠标事件源:调用相应的 addMouseListener和addMouseMotionListener方 法。
以这样做。 如果想要windowClosed方法被调用,则需要在 windowClosing方法中执行窗口的dispose方法, 然后从windowClosed方法中调用System.exit方 法。如上例示 另外,窗口的关闭如果要通过合适的按钮单击来实 现时,调用窗口的dispose方法。System.exit方 法是结束程序,也能够关闭窗口。
当有多个组件挂接到同一个行为事件监听器上时,可以用全局 标识符来标识按下的按钮或选中的菜单项,方法是,在组 件创建时,调用组件对象的setActionCommand方法给该组 件分配一个标识符,当这个组件的行为事件发生时则通过 调用ActionEvent对象的getAcitonCommand方法获取这个标 识符。
public void keyPressed(KeyEvent e){……} //大括号中为处理事件的代码 public void keyReleased(KeyEvent e){} //未用到此方法,所以方法体为空
public void keyTyped(KeyEvent e){}
}
5
8.5.2 常见事件的处理举例
8.5 Java的事件处理模型
8.5.1 Java的事件处理模型概述 8.5.2 常见事件的处理举例 8.5.3 事件监听器的挂接和适配器 8.5.4 GUI类和事件监听类的关系
1
8.5.1 Java的事件处理模型概述
在Java 程序的运行过程中,当用户通过程序的 用户界面进行某个操作时,便引发一个相应的 事件(Event)。 Java 中的事件,是一个数据对象,用来描述用 户所执行的操作。 Java定义了很多事件类,分别用于描述不同的用 户行为。 面向对象的AWT事件处理模型—委托模型:将事 件委托给在控件上注册的“事件接收器”接口 或“事件适配器”类进行处理。
7
窗口事件的处理
windowOpened windowClosing windowIconified 当窗口打开时 单击窗口右上角关闭按钮尝试关闭窗口时 单击窗口的最小化图标,窗口最小化时执行方 法
windowDeiconified 单击窗口的还原按钮,窗口还原时执行
windowActivated
E S L
4
事件处理方法
实现事件监听器接口法: 1)首先给组件注册监听器,使用下列方法: addxxxListener(事件监听器对象); 2)确定了事件监听器的类型后,必须在程 序中定义类来实现这些接口,重写接口中 的所有方法。
1)addKeyListener(new CharType());
2)public class CharType implements KeyListener{
相关文档
最新文档