




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章Java事件处理,学习导读,第六章学习了如何设计Java图形界面接下来,介绍Java的事件处理机制,例如如何在程序中接收并处理如键盘按键和鼠标点击等“事件”,课程结构,事件处理模型按钮事件鼠标事件键盘事件窗口事件其他事件,7.1事件处理模型,1、基于继承的事件处理模型(JDK1.0)JDK1.0中,事件处理是基于继承的,事件先发送到组件,然后沿容器层次向上传播。没有被组件处理的事件会自动地继续传播到组件的容器。如图:,7.1事件处理模型,具体的处理方法调用action()方法或handleEvent()方法来获取程序运行时发生的事件,所有组件发生的事件都在此方法中处理。见书P136例7。1,7.1事件处理模型,基于继承的事件处理模型的特点事件只能由产生这个事件的组件或包含这个组件的容器处理。大量的CPU周期浪费在处理不相关的事件上。任何对于程序来说不相关或者并不重要的事件会沿容器层次一路传播,直到最后被抛弃,为了处理事件,必须创建一个庞大的handleEvent()方法,该方法中包含的大量的逻辑判断,给编程带来困难。不能为每一种事件特定指定操作动作,7.1事件处理模型,2、基于代理的事件处理模型(JDK1。1)在这个模型中,事件被直接送往产生这个事件的组件,对于每一个组件注册一个或多个称为监听者的类,这些类包含事件处理器,用来接收和处理这个事件。监听者就是实现了Listener接口的类。事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口,7.1事件处理模型,在Button对象上用鼠标进行点击时,将发送一个ActionEvent事件。这个ActionEvent事件会被使用addActionListener()方法进行注册的所有ActionListener的actionPerformed()方法接收。见书P137例7。2,7.1事件处理模型,基于代理的事件处理模型的特点事件不会被意外地处理。在层次模型中,一个事件可能传播到容器,并在非预期的层次被处理。有可能创建并使用适配器(adapter)类对事件动作进行分类。有利于把工作分布到各个类中。重点学习这种事件处理模型,7.1事件处理模型,3、事件事件处理的三要素。(1)事件源事件源是一个事件的产生者,如按钮、窗口及文本域等。(2)事件类型Java中所有的事件都封装成一个类,这些事件类被集中在java.awt.event包,所有的事件类均继承了AWTEvent类和一个方法getSouce()方法,该方法返回发生事件的对象。(3)事件监听器不同的类型事件发生后,由事件监听器接收事件并调用相应的事件处理方法。所有的事件监听器实际上都是一个java.awt.event包中的接口,引入了java.util.EventListener接口。不同事件类型的监听器具有不同的方法。见书P138页表71,7.1事件处理模型,事件处理步骤程序加入java.awt.event包:Importjava.awt.event;给所需的事件源对象注册事件监听器:事件源对象.addXXXListener(XXXListener);实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法例:b2.addActionListener(this)见例73,7.1事件处理模型,4、事件Adapters(适配器)实现每个Listener接口的所有方法的工作量是非常大的,为了方便起见,Java语言提供了Adapters类,用来实现含有多个方法的类。你定义的Listener可以继承Adapter类,而且只需重写你所需要的方法。,7.1事件处理模型,例如,窗口事件对应的监听器为WindowListener,它必须实现多个方法,包括windowOpened()、windowClosed()、windowClosing()、WindowIconfied()、WindowDeiconfied()、WindowActivated()、WindowDeactivated(),这样加大了不必要的编程工作量。如果继承了WindowAdapter,就只需实现其中某一个或几个方法,不需要实现所有的方法。后面很多的例子都只实现windowClosing()一个方法,目的是在关闭窗口时退出系统。,7.2按钮事件的处理,点击按钮所发生的事件为动作事件动作事件对应的事件类是ActionEvent类动作事件对应的事件监听器为:ActionListener监听器的主要方法:actionPerformed(ActionEvente)发生动作事件时被调用,7.2按钮事件的处理,实现动作事件的操作工程:第一步,注册动作事件监听器addActionListener(ActionListener)。第二步,实现ActionListener接口的方法:actionPerformed(ActionEvente)见P143例7。4例7。5,7.3鼠标事件的处理,触发鼠标事件的事件源通常是一个容器,当鼠标进入、离开容器,或者在容器中单击鼠标、拖动鼠标等操作时,都发生鼠标事件鼠标事件对应的事件类是MouseEvent类MouseEvent类中方法:getX()获取鼠标的X坐标getY()获取鼠标的Y坐标getPoint()获取鼠标的位置,7.3鼠标件的处理,鼠标事件对应的事件监听器有两个:MouseListener(或者MouseAdapter)对应鼠标事件,MouseMotionListener(或者MouseMotionAdapter)对应鼠标移动事件。,7.3鼠标事件的处理,MouseListener(或者MouseAdapter)的主要方法MousePressed(MouseEvente)鼠标按下时的处理方法MouseReleased(MouseEvente)鼠标释放时的处理方法MouseEntered(MouseEvente)鼠标进入时的处理方法MouseExited(MouseEvente)鼠标离开时的处理方法MouseClicked(MouseEvente)鼠标点击时的处理方法见书p148例7。7,7.3鼠标事件的处理,MouseMotionListener(或者MouseMotionAdapter)的主要方法MouseMoved(MouseEvente)鼠标移动时的处理方法MouseDraged(MouseEvente)鼠标拖动时的处理方法见例7。8使用Adapter见例7。9,7.4键盘事件的处理,在具有键盘焦点的组件中按下或释放键盘等操作时,都发生键盘事件键盘事件对应的事件类是KeyEvent类KeyEvent类主要方法:getKeyCode()获得按下或释放的键代码getKeyText()获得按下或释放的键的字符串,7.4键盘事件的处理,键盘事件对应的事件监听器为:KeyListener或KeyAdapter主要方法:KeyPressed(KeyEvente)按下键盘时的处理方法KeyReleased(KeyEvente)释放键盘时的处理方法见例7。11,7.5窗口事件的处理,有Window及其扩展类(Frame、Dialog)等才能激发窗口事件,表示窗口处于激活/无效状态、图标/非图标状态或打开/关闭状态等窗口事件对应的类为WindowEvent,监听器为WindowListener(或WindowAdapter),7.5窗口事件的处理,主要方法:windowOpened(WindowEvente)打开窗口的事件处理windowClosed(WindowEvente)关闭窗口的事件处理windowClosing(WindowEvente)正在关闭窗口的事件处理WindowActivated(WindowEvente)激活状态的事件处理WindowDeactivated(WindowEvente)无效状态的事件处理见书P152页,7.6其他事件的处理,1复选框、单选钮事件处理事件类是ItemEvent:选项事件对应的事件监听器为:ItemListener方法:itemStateChanged(ItemEvente)发生选项事件时被调用,7.6其他事件的处理,2滚动条事件处理调整事件对应的事件类是AdjustmentEvent类:调整事件对应的事件监听器为:AdjustmentListener方法:adjustmentValueChanged(AdjustmentEvente)发生调整事件时被调用,7.6其他事件的处理,3下拉列表的事件处理事件类是ItemEvent:选项事件对应的事件监听器为:ItemListener方法:itemStateChanged(ItemEvente)生下拉列表发生了动作时被调用,7.6其他事件的处理,4菜单事件的事件处理菜单事件一般是当我们点击某个菜单项时所发生的事件。菜单项有两种:MenuItem动作事件CheckboxMenuItem,选项事件,7.6其他事件的处理,MenuItem的事件处理第一步,给所有的MenuItem菜单项注册动作事件监听器addActionListener(ActionListener)。第二步,实现ActionListener接口的方法:actionPerformed(ActionEvente)。在该方法中用e.getSource()获取用户所选的菜单项,并进行相应的处理。,7.6其他事件的处理,CheckboxMenuItem的事件处理第一步,给所有的CheckMenuItem菜单项注册选项事件监听器addItemListener(ItemListener)。第二步,实现ItemListener接口的方法:itemStateChanged(ItemEvente)。在该方法中用e.getSource()获取用户所选的菜单项,e.getItem()获取用户所选的菜单项的标签,e.getStateChange()获取是否选中,并进行相应的处理。,本章小结,本章主要介绍Java事件处理的方法动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国自动驾驶路测牌照发放情况及技术成熟度分析报告
- 2025-2030中国绿色建筑技术发展及应用前景预测报告
- 大班社区活动方案
- 大班国庆趣味活动方案
- 2025-2030中国氢能源技术突破与商业化路径分析报告
- 外国友人互动活动方案
- 大自然装饰活动方案
- 培训年底充值活动方案
- 夜间试乘试驾活动方案
- 大众关爱活动方案
- GB/T 17626.18-2016电磁兼容试验和测量技术阻尼振荡波抗扰度试验
- SDS汽油安全技术说明书
- 六年级科学上册教学计划
- 人教版数学六年级下册期末测试卷及参考答案
- GeneralEnglish-入学测试(剑桥五级)附有答案
- 会议管理系统的分析与设计
- JJF(建材)110-2019水泥雷氏夹膨胀测定仪校准规范-(高清现行)
- 省级土壤样品库实施方案
- 河南POCT试剂项目投资计划书(模板)
- 2016-2017学年广西桂林市八年级(下)期末数学试卷
- 吊装作业安全规范
评论
0/150
提交评论