




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 北京大学计算机系代亚非 第三章事件处理 2 第3章事件处理 3 1什么是事件3 2鼠标产生的事件3 3键盘产生的事件3 4动作事件3 5通用事件处理程序3 6发送自己的事件3 7Java1 1事件处理模型3 9小结 3 什么是事件 用户用于交互而产生的键盘或鼠标动作 响应用户的动作称为处理事件 在类Event中 定义了所有的事件处理方法 小应用已经继承了这些方法 3 1什么是事件 CGI之外的选择 4 3 1什么是事件 importjava awt Event Event在java awt包中 无论哪个键按下或者释放 还是鼠标移动 按下鼠标或释放鼠标 AWT都会捕获 并产生一个事件 处理事件的核心是重写处理事件的方法通用方法 handEvent Eventevt Objectarg 专用方法 MouseDown Eventevt Objectarg 5 Event类的数据域 3 1什么是事件 6 3 1什么是事件 如果你不覆盖你要处理的方法 则缺省的方法返回一个假值 通知系统没有处理事件 7 3 2鼠标产生的事件 鼠标事件的三个参数 1 事件的类型 是移动 托拽 2 是按下还是放开 3 鼠标的位置 x y 方法的重写 publicbooleanmouseDown Eventevt intx inty 8 3 2鼠标产生的事件 例 在鼠标单击的地方显示 MouseClick html 思路 记忆鼠标点过的所有点1 Pointmarks newPoint 20 在init方法中 2 marks i newPoint x y MouseDown方法中 3 将所有的点画出来 在paint方法中 g fillOval x y 10 10 9 3 2鼠标产生的事件 booleanmouseDown Eventevt intx inty Marks i newPoint x y repaint publicvoidpaint Graphicsg intk for k 0 k i k g fillOval Marks k x Marks k y 10 10 importjava awt importjava applet publicclassmarkextendsApplet inti PointMarks publicvoidinit Marks newPoint 20 i 20 10 importjava awt importjava applet Applet publicclassCountClickextendsApplet intCurrentMarks 0 publicbooleanmouseDown Eventevt intx inty CurrentMarks repaint returntrue publicvoidpaint Graphicsg g drawString CurrentMarks 10 10 3 2鼠标产生的事件 练习 对鼠标的点击动作计数 11 捕获的方法keyDown Eventevt intkey Event类的键常量常量键常量键常量键DOWN下箭头键ENDEnd键F1F1键F2F2键F3F3键F4F4键F5F5键F6F6键F7F7键F8F8键F9F9键F10F10键F11F11键F12F12键HOMEHome键LEFT左箭头键PGDNPageDown键PGUPPageUp键RIGHT右箭头键UP上箭头键 3 3键盘产生的事件 12 例题 显示用户按下的字母键内容 3 3键盘产生的事件 importjava applet Applet importjava awt charPresskey publicbooleankeyDown Eventevt intkey Presskey char key repaint returntrue publicvoidpaint Graphicsg g drawString Presskey 10 10 13 3 3键盘产生的事件 键盘事件处理通常包括 显示字符 光标移动特殊键publicbooleankeyDown Eventevt intkey switch key caseEvent F1 caseEvent PGUP 修正键if evt shiftDown if evt controlDown 14 3 3键盘产生的事件 练习题 在屏幕上显示用户输入的字符串在前一题的基础上 将字符串起来 但是不能用 Strings s s presskey 应该用StringBuffer对象的append方法StringBuffersb sb appned presskey sb的内容不能直接用g drawString 应该用g drawString sb toString x y 15 3 4动作事件 凡是由构件产生的事件叫动作事件ACTION EVENT 处理这类事件的方法是 action 16 3 4动作事件 action Eventevt Objectarg evt target 指明事件类型 button checkbox list 17 3 4动作事件 判断组件类型 如是button或checkbox if evt targetinstanceofButton if evt targetinstanceofCheckbox 判断是哪多个同类组件中的哪一个if evt target button1 if evt target button2 或者通过判断标签内容if arg 确定 if arg 取消 18 3 4动作事件 例 记录按下按钮的次数 并显示出来 importjava awt importjava applet Applet publicclassCountClickextendsApplet intCurrentMarks 0 publicinit Buttonb1 newButton 按钮 add b1 publicbooleanaction Eventevt Objectarg CurrentMarks repaint returntrue publicvoidpaint Graphicsg g drawString CurrentMarks 10 10 19 思路 1 设计两个按钮 后面详细讲 2 事件处理action根据选择 分别标记园或方3根据标记画出相应图形g drawCirlce 50 50 50 50 g drawRect 25 25 75 75 3 4动作事件 例 根据用户选择画图形 importjava awt importjava applet Applet publicclassdrawingextendsApplet booleancirclemark true publicinit Buttonb1 newButton 园 Buttonb2 newButton 方 add b1 add b2 20 3 4动作事件 publicvoidpaint Graphicsg if circlemark g filloval 10 10 30 30 elseg fillRect 20 20 40 40 publicbooleanaction Eventevt Objectarg if evt target b1 circlrmark true elsecirclrmark false repaint returntrue 21 handleEvent处理所有的小应用程序所接受的事件 由它将事件送给相对应的方法 让我们看一下handleEvent的缺省实现 3 5通用的事件处理程序 handleEvent publicbooleanhandleEvent Eventevt switch evt caseEvent MOUSE ENTER returnmouseEnter evt evt x evt y caseEvent MOUSE EXIT returnmouseExit evt evt x evt y caseEvent MOUSE MOVE returnmouseMove evt evt x evt y 22 3 5通用的事件处理程序 handleEvent caseEvent MOUSE DRAG returnmouseDrag evt evt x evt y caseEvent MOUSE UP returnmouseUp evt evt x evt y caseEvent MOUSE DOWN returnmouseDown evt evt x evt y caseEvent KEY PRESS caseEvent KEY ACTION returnkeyDown evt evt key caseEvent KEY RELEASE 23 3 5通用的事件处理程序 handleEvent caseEvent KEY ACTION RELEASE returnkeyUp evt evt key caseEvent ACTION EVENT returnaction evt evt arg caseEvent GOT FOCUS returngotFocus evt evt arg caseEvent LOST FOCUS returnlostFocus evt evt arg returnfalse 24 覆盖handleEvent的情况 原来的handleEvent不被执行 只处理我们感兴趣的事 publicbooleanhandleEvent Eventevt switch evt id caseEvent MOUSE ENTER doingsomething caseEvent MOUSE EXIT doingsomething 3 5通用的事件处理程序 handleEvent returnfalse default returnsuper handelEvent evt 25 3 7Java1 1事件模型 Java1 0的事件管理机制在Java1 0中 多数事件发生在类component里 并通过handleEvent 方法将事件传递给相应的处理方法 如果没有这样的方法 则沿着包含层次传给上一级容器 直到最顶层容器仍没有处理 则合理遗弃 不适于重用 例如一个发生在按钮上的事件 处理它的action方法通常属于包含按钮的父类容器 这不符合面向对象的设计原则Java1 1的事件管理机制在Java1 1中 一个事件常常被其它对象处理 这些对象称为事件监听器 当特定事件发生时 相应的监听器能够知道 AWT共有11个监听器类 每个都有处理事件的方法 26 3 7Java1 1事件模型 在Java1 1中如何捕获事件 三个步骤 1 必须定义一个类来实现接口classButtonTrackerimplementsActionListener 2 定义方法3 向构件注册该类的一个实例button1 addActionListener this checkbox addActionListener this 27 3 7Java1 1事件模型 Java1 0和Java1 1事件模型的区别 在Java1 1中 事件不再沿着包含层次向上传递 而是传给一个监听器 因此在Java1 1中 你希望发生在构件事件由哪个监听器处理 就将该监听器注册到构件上 28 3 7Java1 1事件模型 29 3 7Java1 1事件模型 常用的监听器及其方法键盘监听器 KeyListener 方法 keyPressed KeyReleased keyTyped 鼠标监听器 MouseListener 方法 mouseClicked mousePressed mouseReleased mouseEntered mouseExited构件监听器 ActionListener 方法 actionPerformed 如果一个监听器有若干各方法 则必须将这些方法全部覆盖 30 3 7Java1 1事件模型 例 importjava awt event importjava awt importjava applet publicclassTestButtonextendsApplet Buttonbutton1 Colorcolor 31 3 7Java1 1事件模型 publicvoidinit button1 newButton TestButton button1 addActionListener newButtonHandler this add button1 Fontfont newFont TimesRoman Font PLAIN 48 g setFont font color Color black resize 400 200 32 3 7Java1 1事件模型 publicvoidpaint Graphicsg g setColor color g drawString TESTCOLOR 55 120 33 3 7Java1 1事件模型 publicclassButtonHandlerimplementsActionListener TestButtona ButtonHandler TestButtontb a ts publicvoidactionPerformed ActionEventevent Stringarg event getActionCommand if arg TestButton if a color Color black a color Color red elsea color Color black a repaint 34 3 7Java1 1事件模型 classTestButtoncolor black paint classButtonHandleraa color black button newButtonHandler this 100101 100101 35 3 7Java1 1事件模型 publicclassTestButtoninnerextendsApplet Buttonbutton1 Colorcolor Fontfont classButtonHandlerimplementsActionListener publicvoidactionPerformed ActionEventevent Stringarg event getActionCommand if arg TestButton if color Color black color Color red elsecolor Color black repaint 36 3 7Java1 1事件模型 在某个类的内部定义的类叫内部类内部类的特点 内部类可以访问外部类的数据和方法内部类的匿名形式是指 在定义一个新类的同时创建一个实例 classExample publicvoidinit Buttonbutton1 newButton button button1 addActionListener newButtonHandler publicvoidactionPerformed ActionEventevent Stringarg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机床电气线路安装维修指南
- 2025年耳鼻喉科学鼻窦炎药物治疗应用考试题答案及解析
- 矿山企业矿山环保管理人员聘请与环保治理合同
- 离婚协议子女探视权及财产分割执行细则与补偿协议
- 矿山开采劳务外包及资源综合利用合同
- 离婚后子女抚养费、教育金支付与财产分割协议书
- 大数据产业园区厂房租赁与数据安全保护协议
- 班组级岗前安全培训内容课件
- 2025年财务分析试卷及答案
- 班组标准化管理课件
- 九一八警钟长鸣强国有我+课件-2025-2026学年高一上学期爱国主义主题班会教育+-
- 2025中国人民抗日战争暨世界反法西斯战争胜利80周年阅兵观后感心得体会3篇
- 2025年辅警笔试考试题库题库与答案
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 工程回访及客户满意度表最新文档
- (高职)企业财务会计电子课件完整版PPT全书电子教案
- DB23∕T 1019-2020 黑龙江省建筑工程资料管理标准
- T∕CHAS 10-4-13-2020 中国医院质量安全管理 第4-13部分:医疗管理住院患者健康教育
- VTE的预防与治疗(课堂PPT)
- 第五章 新型化学纤维
- 100关键字写字要诀(动画_mp3配音)2(1)
评论
0/150
提交评论