




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章,事件处理,Sunny Liu weiliu_,内容提要,事件概述 事件模型组件 事件类 事件监听器类 事件适配器类 事件处理 事件适配器类 内部类、匿名类,事件概述,事件的定义 日常生活中,事件是指事件的主体在一些外部因素的驱动下,其状态或行为发生了变化,需要对其作出处理。 比如:电话铃响、门被叩响、汽车启动等都是事件 事件是用户通过输入设备(如:鼠标、键盘等)在程序界面上进行的操作。,事件概述,用户和程序的交互原理 说 明: 前面所创建的GUI程序只实现了“沟通第一步”,即:用户可以通过触发事件发送信息给GUI程序(如:点击按钮) 下面将学习如何实现“沟通第二步”:GUI程序通过处理事件回馈信息给用户,事件概述,事件驱动程序 用户对GUI控件进行操作便产生事件,GUI程序监听事件,并驱动相应的程序来处理事件,这个过程称为事件驱动过程。,事件概述,事件驱动流程图,事件概述,事件的构成 事件对象 当用户通过键盘或鼠标和应用程序进行交互时,事件对象就产生了 系统捕捉该事件相关的数据信息,比如:事件发生的时间,事件的类型(如:敲击键盘,或单击鼠标等)等 然后,系统将这些数据封装成为一个事件对象 最后,系统将这个事件对象传递给事件所属的应用程序 事件源 程序中,产生事件的GUI组件 事件处理(监听)对象 处理事件的对象,其中包含处理事件的方法,事件概述,事件的构成 以“用户点击按钮”事件来说明事件三要素:,事件概述,事件的构成 以日常生活中“案件处理”的过程作类比,事件模型组件,JDK 1.0 的事件处理机制 多数事件发生在具体的组件(Component)对象上 通过组件对象的handleEvent()方法将事件传递给相应的处理方法 如果没有相应的处理方法,则会将事件传给包含组件的上一级容器,以此类推 如果一直传到最顶层容器仍没有处理方法,则该事件不予处理 缺 点: 重用性比较差,因为其设计没有遵循面向对象的程序设计原则,事件模型组件,JDK 1.2 的事件处理机制 增加了专门用来处理事件的类,这些类的对象称为事件监听器 当特定类型的事件发生时,相应的监听器能够监听到,并驱动处理该类事件的方法来处理,事件模型组件,JDK 1.2 的事件模型 JDK 1.2模型基于以下组件: 事件类 事件监听器 事件适配器,事件模型组件,事件类 当一个事件发生时,系统用一个事件对象来描述该事件,每个事件对象都有对应的事件类 事件类的特征: java.util.EventObject类是所有事件类的父类 事件类包含在java.awt.event和javax.swing.event包中 常见的事件类多数为AWT相关事件类 AWT相关事件类均继承自java.awt.AWTEvent getSource()方法返回事件源对象,事件模型组件,AWTEvent类 AWT事件包括: 低级事件:组件相关的事件 高级事件:语义相关的事件,事件模型组件,AWTEvent类层次图,事件模型组件,事件监听器 被委派专门监听和处理事件的对象为事件监听器 Java语言中没有提供专门的事件监听器类,而是提供包含事件处理方法的监听器接口 针对不同的事件类,提供了不同的事件监听器接口 例如:与键盘事件KeyEvent对应的监听器接口为:KeyListener,事件监听器 事件监听器对象创建好之后,还需要将其注册到事件源上,这样监听器才可以监听该事件源。 注册监听器语法: 事件源对象 . addXxxListener (XxxListener对象); 注销监听器语法: 事件源对象 . removeXxxListener (XxxListener对象);,事件模型组件,事件适配器 例子:定义KeyEvent监听器类,事件处理,事件处理过程,事件处理,实现事件处理的步骤 创建事件监听器类 创建事件监听器对象 注册事件监听器,事件处理,常用事件 动作事件处理 为了处理动作事件(ActionEvent),需要为事件源对象注册监听器对象 监听器对象必须实现ActionListener接口 ActionListener只包含一个抽象方法actionPerformed()。当事件发生时,系统会自动调用该方法来处理事件,事件处理,常用事件 窗口事件处理 为了处理窗口有关事件(WindowEvent),事件监听器类要实现WindowListener接口,事件处理,常用事件 窗口事件处理,事件处理,常用事件 鼠标事件处理 为了处理鼠标相关的事件(MouseEvent),事件监听器类要实现MouseListener接口,事件处理,常用事件 鼠标事件处理,事件适配器类,事件适配器类的特征 适配器类就是一个特殊的事件监听器类 Java语言只针对包含多个抽象方法的监听器接口,提供了相应的XXXAdapter(适配器) 比如:WindowListener接口的适配器类是WindowAdapter,内部类,内部类的定义 内部类是定义在其它类内部的类,又称为成员类(或嵌套类) 内部类的特征 内部类可以被看做是外部类的一个成员 内部类的作用域限制在包含它的类内部 内部类的对象能访问外部类的其它成员 外部类能通过内部类对象能访问内部类成员,内部类,注 意 如果想要在其它(不相关的)类中创建内部类的对象,必须首先创建外部类的对象,然后间接引用内部类, 例如:,匿名类,匿名类的定义 顾名思义就是未被命名的类 匿名类的特征 在程序中只使用(即:被实例化)一次,实践,问题陈述 用户进入Happy聊天室登录界面: 点击“登录”按钮时,需要确保用户名和密码不能为空,要用事件处理机制来检索数据并验证其完整性 点击“退出”按钮时,则退出登录界面,实践,解决步骤,实践,步骤1: 确定添加点击按钮的事件处理机制 点击按钮是动作事件(ActionEvent),因此要创建实现ActionListener接口的事件监听器类 将事件处理代码添加到actionPerformed()方法中,实践,步骤2: 确定要检验的数据、检验条件以及提示信息,实践,步骤3: 确定注册事件监听器的组件 需要注册事件监听器的组件包括:exitButton和loginButton 步骤4: 修改已有代码,实践,步骤5: 编译运行程序 用户名为空时,点击“登录”按钮会弹出提示框: 密码为空时,点击“登录”按钮会弹出提示框:,小结,Java语言中的事件处理机制 事件的三要素包括: 事件对象 事件源 事件处理器 事件模型基于以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁师附中2025年高三第一次教学质量检测试题卷数学试题含解析
- 江苏航空职业技术学院《文学概论Ⅰ》2023-2024学年第一学期期末试卷
- 商场员工内部偷盗培训
- 化疗局部毒副反应的护理
- 抢救病人护理工作流程
- 2025短期合同工的劳动合同示例
- 2025标准城镇住宅装修合同范本
- 【8物(粤)期中】芜湖市无为市2023-2024学年八年级下学期期中测试物理试题
- 期中试题2024-2025学年人教PEP版英语四年级下册(含答案)
- 劳务合作协议书(个人咨询版)
- GB∕T 14527-2021 复合阻尼隔振器和复合阻尼器
- 航运系统组成和航运企业组织结构及特点
- 丧假证明模板
- 首届上海科技期刊编辑技能大赛试题
- 隧道二衬、仰拱施工方案
- 按期取得毕业证和学位证承诺书
- Q∕GDW 12106.4-2021 物联管理平台技术和功能规范 第4部分:边缘物联代理与物联管理平台交互协议规范
- 第五章 学校教育的主要活动形式:课堂教学
- 大会—冠脉微循环障碍
- 《办公自动化》教学教案
- 动物检疫学讲义课件
评论
0/150
提交评论