第13章事件处理(第4版)

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

窗口事件的监听者是WindowListener接口,具体 方法见教材表13.9
见教材例13.7
22
13.8 对话框设计及相应的事件处理
JDialog是Swing中提供的用来实现自定义的对话 框, JDialog类也属于顶层容器,其默认的布局管 理器为BorderLayout。 JDialog有模式和非模式两种方式。
13.13 菜单设计
Java语言菜单分类:窗口菜单、弹出式菜单(快 捷菜单)。 菜单栏类的继承关系如教材图13.14所示。
在菜单程序设计中通常会用到五种菜单对象:
JMenuBar Jmenu JMenuItem JCheckBoxMenuItem JRadioButtonMenuItem。
29
13.13 菜单设计
6
13.1 委托事件模型
委托事件模型:是将事件源(如命令按钮)和对事 件做出的具体处理(利用监听者实例来对事件进行 事件对象 具体的处理)分离开来。一般情况下,组件(事件 (java.awt.event),表 示事件的内容,内部封 源)不处理自己的事件,而是将事件处理委托给外 装了一个对事件源的引 部的处理实体(监听者)。当事件发生时,产生事 用等信息。 件的对象即事件源,会把此“信息”转给事件监听 者处理的一种方式,而这里所指的“信息”事实上 就是java.awt.event事件类库里某个类所创建的对象, 我们把它称为“事件对象”(Event object)。事件 对象表示事件的内容,对象内部封装了一个对事件 源eveutSource的引用和其他信息。
7
13.1 委托事件模型
总的来说,委托事件模型是由产生事件的对象( 事件源)、事件对象以及事件监听者对象之间的关系 所组成。而其中的“事件监听者”就是用来处理事件 的对象,也就是说,监听者对象会等待事件的发生, 并在事件发生时收到通知。事件源会在事件产生时, 将相关于该事件的信息封装在一个对象中,称之为“ 事件对象”,并将该对象传递给事件监听者,监听者 就可以根据该“事件对象”内的信息决定适当的处理 方式,即调用相应的事件处理程序。
25
13.10 鼠标事件类MouseEvent
监听者也可以是继承MouseAdapter类或 MouseMotionAdapter类: 必须实现教材中表13.19两个用于处理鼠标移动与 拖动事件的方法。 见P教材中例13.10
26
13.11 列表框及相应的事件处理
列表框组件JList中显示出多个选项供用户选择, 用户可以在列表框中选择一项或多个选项。
窗口菜单:
窗口菜单是相对于窗口的,它出现在窗口标题 栏的下面,总是与窗口同时出现。也不能被布 局管理器所控制。
30
13.13 菜单设计
窗口菜单:
菜单在菜单中除了上面介绍的菜单项外,还有 一种带复选框的菜单项,它的前面有一个复选 标记:“”表示选中,“”表示未选中。 这种菜单项的功能是由JCheckBoxMenuItem类 所实现的。
ቤተ መጻሕፍቲ ባይዱ
14
13.2 Java语言的事件类
• 对于每一个事件类,几乎都有相应的事件监听者 。监听者接口多数都是继承自 java.util.EventListener接口。图13.4列出了事件监 听者接口之间的继承关系。
事件类、事件监听者接口和监听者接口中提供的 方法关系列表见教材中表13.1。
15
13.2 Java语言的事件类
用按键适配器类KeyAdapter处理KeyEvent事件
见教材例13.9
24
13.10 鼠标事件类MouseEvent
用鼠标单击事件源、鼠标指针进入或离开事件 源,或移动、拖动鼠标等操作,均会触发鼠标事 主要用于处理 件。 多于一个鼠标 事件的情况。 该类常用方法见教材表 13.17 处理鼠标事件MouseEvent的监听者是实现 MouseListener接口或MouseMotionListener接口: 必须实现教材表13.18中5个用于处理不同鼠标事件 的方法。(注意: mousePressed 、mouseClicked、 和mouseReleased 触发顺序。)
5
13.1 委托事件处理
Java语言规定:为了让监听者能对事件源发生的 事件进行处理,创建该监听者对象的类必须声明 实现相应的监听者接口或继承相应的适配类,即 必须在类体中具体定义该接口中所有方法的方法 体或覆盖适配器类中的相应方法,以供监听者自 动调用相应事件处理方法来完成对应事件的任务 ,这些处理事件的方法就是事件处理程序。
17
为某些监听者接口提供了适配器类XXXAdapter, 当需要对某种事件进行处理时,只需让事件处理 类继承事件所对应的适配器类,就可以只覆盖本
13.3 适配器类
次操作用到的事件处理方法即可。
当一个类需要处理多种事件时,通过继承适配器的 方法就不可行了,但可以基于适配器类,用内部类 的方法处理。 若想用作事件监听者的类已经继承了别的类,就 不能再继承适配器类,只能去实现监听者接口。 监听者接口与对应的适配器类见教材表13.3
待用户通过鼠标、键盘给它通知(消息驱动), 它再根据这个通知的内容进行相应的处理(事件 驱动)。 通常一个键盘或鼠标操作会引发一个系统预先定 义好的事件,用户只需编写代码,定义每个特定 事件发生时程序应做出何种响应即可。
3
13.1 委托事件处理
事件(event):用户使用鼠标或键盘对窗口中的组 件进行交互时所发生的事情。对这些事件做出响 应的程序,称为事件处理程序(Event Handler)。
8
13.1 委托事件模型
• 例如,当按钮被鼠标单击时,会触发一个“操作事 件”(Action event),Java程序就会产生一个“事 件对象”来表示这个事件,然后把这个“事件对象 ”传递给“事件监听者”,“事件监听者”再依据 “事件对象”的种类把工作指派给事件处理者,即 事件处理程序。在这里按钮就是一个事件源。 • 为了让“事件源”(如按钮)知道要把事件信息传 递给哪一个“事件监听者”,事先必须把“事件监 听者”向“事件源”注册(register),这个操作也就 是告知“事件源”要把事件信息传递给它。图13.1 说明了“委托事件模型”的工作原理。
12
13.1 委托事件模型
使用匿名内部类来担任监听者 使用匿名内部类充当监听者这种方式,使程序看 起来比较清楚明了。
见教材例13.3。
13
13.2 Java语言的事件类
java.awt.event 包和javax.swing.event包中定义了许 多事件类用于处理各种用户操作所产生的事件。 事件类的继承关系见教材图3.3。
第13章 事件处理
L/O/G/O
1
本章主要内容
委托事件模型 担任监听者的条件 Java语言的事件类
监听者接口与适配器类
事件及相应的事件处理 菜单栏设计 工具栏设计师 定时器
2
13.1 委托事件模型
事件处理:为组件设计相应的程序,使组件能够 消息处理和事件驱 响应并处理用户的操作。
动是面向对象编程 Java 程序一旦构建完 GUI,就不再工作,而是等 技术的主要特点。
见教材例13.5
20
13.6 文本组件及相应的事件处理
文本组件所触发的事件主要有动作事件 ActionEvent和文本变化事件CaretEvent 。 见教材例13.6
21
13.7 窗口组件及窗口事件处理
Window类的任何子类都可能触发下列的窗口事 件:打开窗口、正在关闭窗口、关闭窗口、激活窗 口、变成非活动窗口、最小化窗口和还原窗口。 Window类常用方法见教材表13.8
通过使用JOptionPane类创建以下四种标准对话框
教材中的表13.13给出了创建标准对话框的方法。
应用例子见教材例13.13。
23
13.9 按键事件类KeyEvent
当用户在键盘上输入字符时便会触发此类事件。 表13.14列出了按键事件类KeyEvent的主要方法, 表13.15列出了字符的键码值。 用按键事件接口KeyListener处理KeyEvent事件必 须以类实现KeyListener接口,该接口里声明了3个 方法,见教材表13.16。
.18
13.4 命令按钮及相应的事件处理
命令按钮所触发的事件是动作事件。动作事件类 ActionEvent,也称为操作事件类。
操作事件类的主要数据成员和成员方法见教材表 13.4、13.5 见教材例13.4
19
13.5复选框、单选按钮及相应的 事件处理
• JRadioButton、JCheckBox与JToggleButton除了与 JButton一样都会触发ActionEvent操作事件外, JRadioButton、JCheckBox以及JToggleButton还会 触发ItemEvent事件。 表13.6给出了事件类ItemEvent的主要成员变量, 表13.7给出的是ItemEvent类的常用方法
事件处理程序:Java语言中包含了许多用来处理 事件的接口和类。用于事件处理的方法就声明在 这些类或接口中。这些包含有事件处理方法的接 口称为监听者接口,包含有事件处理方法的类称 为适配器类。监听者负责处理事件源发生的事件 ,为了处理事件源发生的事件,监听者会自动调 用一个方法来处理事件。这些处理事件的方法就 是事件处理程序。
实现上述的接口,针对想要捕获的事件编写方法代码 。如要捕获单击按钮事件,就要为ActionListener接口 里的actionPerformed()方法编写代码。
为事件监听者创建一个对象,让自己的组件和方法完 成对它的注册,方法是在监听者接口的名字里加入一 个前缀“add”,如addActionListener()
每当在事件源上发生一个操作时,就会产生相应 的事件对象。
事件源与其产生的事件对象的对应关系见教材表 13.2。
16
13.2 Java的事件处理类
Java语言中处理事件的具体方法:
确认触发的事件,取得事件类的名字,如ActionEvent ,去掉其中的“Event”字样。在剩下的部分加入 “Listener”,这就是在类里需要实现的事件监听者 接口。
9
13.1 委托事件模型
委托事件模型的工作原理:
10
13.1 委托事件模型
让包含“事件源”的对象来担任监听者
如何编写事件处理程序?见教材中例13.1。
为组件增加事件监听者的方法:由于每一个事 件类型都有一个相应的监听者接口,通常名为 XXXListener,其中XXX代表它所处理的事件 类型。在定义类时要实现该接口。 事件源对
象.addXXXLister(监 监听者有专门的方法用于处理事件,具体在哪 听者对象)
个组件上发生事件后由哪个监听者处理,必须 事前用“组件名.addXXXLister( )”进行注册。
11
13.1 委托事件模型
定义内部类来担任监听者 通常将实现接口的类定义在主类里,使之成为 它的内部类(内部类可以访问外部类的所有成 员) 见教材例13.2。
JCheckBoxMenuItem类的构造方法及常用方法 见教材表13.30、13.31。
事件源(event source):能够产生事件的对象。如 按钮、鼠标、文本框、键盘等。
事件监听者(listener):监听者有专门的方法来处 理事件,事件监听者是一个对事件源进行监视的 对象,当事件源上发生事件时,事件监听者能够 监听到,并调用相应的方法对发生的事件做出相 应的处理。 4
13.1 委托事件处理
使列表框具有滚动功能,可以通过创建一个滚动 窗格JScrollPane的对象,然后将列表框添加到其 中即可。
列表框中可选项的序号是从0开始的。 JList类的构造方法和常用方法见教材表13.20、 13.21。应用 见教材13.11。
27
13.12 组合框及相应的处理
组合框(combo box)也称为下拉列表框(drop-down list),单击下拉列表框右边的向下箭头,然后从 伸展开的选项框中选择一个选项即可。 JComboBox的构造方法及常用方法见教材表13.22 和13.23。 在组合框中进行选择某个选项的操作时会触发 ItemEvent 事件,然后即将事件处理的程序代码 编写在itemStateChanged()方法中。另外,当组合 框处于可编辑状态时,也可以触发ActionEvent事 件。应用见教材例13.12 28
相关文档
最新文档