面向对象程序设计 第09章 事件处理机制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20
9.4论文写法(1)
发表的小论文(4-10页): ①摘要:简明扼要介绍自己的主要完成工作,非常重要 ②前言:对当前国内外相关研究进行分类分析,主要存在哪些方面问题, 你准备如何解决?解决那些哪些问题?即引出论题。 ③工作介绍:依据前面的论题,给出自己所做的主要工作,例如算法的 改进、新方法的应用等等。即给出自己的创新之处。 ④性能分析:把自己的工作和当前最新的国内外的工作进行对比分析, 给出自己的工作的优势所在。 ⑤总结:总结自己的相关工作,指出工作的创新点以及不足之处,同时 给出今后的研究方向和研究重点。 注意:审稿人一般看文章的顺序是:摘要-〉前言-〉总结-〉主要工作 介绍-〉性能对比分析
TextEvent
TextListener
textValueChanged(TextEvent)
11
9.2 Java的事件处理(6)
事件处理器的注册方法: 事件处理器:即实现了事件处理接口方法的类对象 事件源.addListener(事件处理器) 键盘事件注册方法: 事件源.addKeyListener(KeyListener kl):即要求
这种方式原理简单,容易理解,但是程序设计比较麻烦, 要全盘读懂程序,需要一层一层的查看系统的关于事件处 理的源代码。
JDK1.0版本采用此模型。
5
9.1事件处理的基本过程(4)
(2)委托事件模型:事件的传递由事件的监听器进行管理。 任何事件处理程序需要首先向java系统的事件监听器注册。 这样,当系统监听到一个事件后,就把事件的传递工作委 托给事件监听器来完成。事件监听器通过分析事件的属性 信息,把事件交给已注册的相应事件处理器来处理。
这种方式不太容易理解,但是程序设计比较容易,不需要 一层一层的查看系统的关于事件处理的源代码。
JDK1.1以后的版本采用的是此种模型。
6
9.2 Java的事件处理(1)
Java的事件处理机制 (1)Java基于组件(事件源)定义了所有事件的事件类。 (2)java.awt.event类是所有图形用户组件的事件类的父类。 常见的事件有: ① ComponentEvent(组件事件):组件尺寸的变化、移动等。 ② ContainerEvent(容器事件):容器内组件的增加、删除等。 ③ WindowEvent(窗口事件):关闭、打开、最大化窗口等。 ④ FocusEvent(焦点事件):焦点的获得和释放。 ⑤ KeyEvent(键盘事件):按键的按下、释放和单击等。 ⑥ ActionEvent(动作事件):按钮按下、Text文本等的回车键。 ⑦ MouseEvent(鼠标事件):单击鼠标、拖动鼠标等。 ⑧ AdjustEvent(调节事件):移动滚动条上的滑块; ⑨ ItemEvent(项目事件):选中项目或放弃选中项目。 ⑩ TextEvent(文本事件):文本内容的改变。
的事件,就由这个事件处理类中的事件处理程序来处理。 ④当事件发生时,事件监听器自动调用已注册的事件处理程序来处理。 例子:简单的聊天窗口(实现监听器的接口) 图示
8
9.2 Java的事件处理(3)
事件类和事件类接口: 一个事件类对应一个事件类监听器接口,事件类监
听器接口的命名规则为去掉事件类后面的 “Event”,换成“Listener”。 不同的监听器接口定义了不同的处理方法,有些接 口只有一个处理方法,有些是多个。 监听器接口的方法是抽象的,所以实现该接口的监 听器处理类必须把该接口中的所有的方法都必须实 现。
KeyEvent KeyListener
mouseDragged(MouseEvent) mouseMoved(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mouseClicked(MouseEvent) KeyPressed(KeyEvent) KeyReleased(KeyEvent) KeyTyped(KeyEvent)
第九章 事件处理机制
本章概要
9.1 事件处理的基本过程 9.2 Java的事件处理 9.3 Java事件处理实例 9.4 题外话:发表论文以及毕业论文的写

2
9.1事件处理的基本过程(1)
事件源和事件:
(1)事件源:产生事件的组件,例如按钮、 选择框和窗口等。例如单击按钮(事件源) 时,就产生了一个单击事件(Action)
21
9.5考试说明
考试: (1)面向对象程序设计方面的论文50%; (2)自主系统设计与研发50%; (3)2007年6月17日课程提交论文(每人一篇)和分组 演示系统(自带笔记本)。 (4)系统和数据库要拷贝或上传到ftp上,学院有要求。
22
7
9.2 Java的事件处理(2)
Java有两种事件处理方式: (1)实现Java事件类的对应的监听器接口。 (2)继承java事件类的对应的事件适配器类。 Java事件处理过程如下: ①创建一个“实现Java事件类的监听器接口”或“继承java事件类的
事件适配器类”的事件处理类。 ②在该事件处理类中实现相应的事件处理程序(事件接口方法)。 ③把该事件处理类注册到事件监听器中,告诉事件监听器如果出现相应
10
9.2 Java的事件处理(5)
事件类
事件监听器接口
接口中定义的方法
FocusEvent FocusListener WindowEvent WindowListener
focusGained(FocusEvent) focusLost(FocusEvent)
windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent)
(2)事件:用户对事件的操作叫做事件。 事件的描述涵盖:事件的名称、来源、产生 时间等等。
3
9.1事件处理的基本过程(2)
事件模型:事件发生后,系统把事件传递给时 间处理程序的方式,称谓事件模型。
两种基本的事件模型: (1)层次事件模型; (2)委托事件模型。
4
9.1事件处理的基本过程(3)
16
9.2 Java的事件处理(10)
如果使用window事件适配器WindowAdapter就 不用实现WindowListener接口中的所有的方法。
例子 问题: 1、既然有了事件适配器,为什么还要事件监听器
接口?(事件适配器无法多继承) 2、利用事件适配器和利用事件监听器接口两种方
19
9.4论文写法(1)
毕业论文: ①研究方向:非常重要 ②研究路线:先看国内中文综述文章;实现一两个国内中文算法;看看 国外最新综述文章;研究国外最新专题文章(50篇)。 ③各章节内容(一般硕士、博士论文写法) ④工程硕士论文写法:面向对象程序设计路线 用户业务(项目背景、引言)--〉系统需求(需求分析、总体功能设 计、关键技术)--〉系统设计(详细功能分析(时序图-〉提取出对象 (E-R图))、数据库设计、类设计、接口设计)--〉系统实现(主要 类串接分析)--〉界面展示-〉总结
事件适配器:java为一些事件的接口提供了事件适配器(Adapter)类 来简化这方面的工作。事件适配器已经实现了对应接口中的所有方法, 事件处理类只需要重载必须处理的那些接口方法就可以了,其他的接口 方法就不用实现了。
例如WindowListener的接口适配器为WindowAdapter,其定义为: 定义
(1)层次事件模型:当系统监听到一个事件后,首先传递 给直接相关的组件,该组件可以对事件进行处理,也可以 不处理;如果组件对事件没有进行处理,则向上传递给组 件所在的容器。同样,该容器可以对事件进行处理,也可 以不处理。如果没有处理,则继续向上传递给容器所在的 容器。以此类推,直至顶层容器。(这种方式类似于异常 处理机制,常规体现在VC、PB、Delphi等编程软件中)
键盘事件监听器把组件上的键盘事件交给键盘事件 处理器kl处理。KeyListener表示实现了 KeyListener接口的类;kl是该类的一个具体对象。
12
9.2 Java的事件处理(7)
鼠标事件注册方法: 事件源.addMouseListener(MouseListener
ml):即要求鼠标事件监听器把组件上的鼠标 事件交给鼠标事件处理器ml处理。 MouseListener表示实现了MouseListener 接口的类;ml是该类的一个具体对象。
KeyAdapter
键盘适配器
MouseAdapter
鼠标适配器
MouseMotionAdapter 鼠标运动适配器
WindowAdapter
窗口适配器
问题:为什么不实现动作适配器、文本适配器、项目适配器?
因为它们的事件只有一个。
18
9.3 Java的事件处理实例
例子:实现一个电话簿管理界面 图示: 1、增加 2、选择 3、删除
14
9.2 Java的事件处理(9)
例子:实现一个键盘事件处理器。 图示 问题: 1、本例子实现了什么功能? 2、本例子中的痛苦之处在哪儿? (1)很容易记错接口对应的事件名称; (2)要把不必要的接口方法实现出来。
15
9.2 Java的事件处理(10)
如果要实现某个事件监听器的接口,就必须实现该事件监听器的所有的 方法,即使这些方法为空,也必须实现。显然,这样的实现方法非常麻 烦,因为有些事件监听器接口中的定义得方法很多。设计事件处理类是, 即使某些用户操作(事件)不准备处理,也要在事件处理类中把相应的 方法实现成空语句。
法实现的事件处理程序有何不同? 一个是实现;一个是重载。
17
9.2 Java的事件处理(11)
java.awt.event包中定义的事件适配器包括以下几个:
ComponentAdapter 组件适配器
ContainerAdapter 容器适配器
FocusAdapter
焦点适配器
13
9.2 Java的事件处理(8)
动作事件注册方法:(按钮单击、文本输入 后回车等)
事件源.addActionListener(ActionListener al):即要求动作事件监听器把组件上的动作 事件交给动作事件处理器al处理。 ActionListener表示实现了ActionListener 接口的类;al是该类的一个具体对象。
9
9.2 Java的事件处理(4)
事件类
事件监听器接口
接口中定义的方法

ActionEvent ActionListener
actionPerformed(ActionEvent)
ItemEvent ItemListener
itemStateChanged(ItemEvent)
MouseEvent MouseMotionListener MouseListener
相关文档
最新文档