java程序设计课件.ppt_第1页
java程序设计课件.ppt_第2页
java程序设计课件.ppt_第3页
java程序设计课件.ppt_第4页
java程序设计课件.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 1 26 1 第九章 事件处理 陈国君 2020 1 26 2 通过本章的学习 主要掌握以下知识点 Java事件处理机制监听者的确定事件处理类适配器类菜单栏设计本章的重点 Java事件处理机制事件处理程序设计本章的难点 事件处理程序设计 事件 事件用于描述程序 系统和程序使用者之间的各种活动 这些事件由系统事先定义好 当用户在图形界面上单击控件或双击鼠标时就可能引发某个事件 而用户程序中需要编制相应的代码来对这些事件做出处理 1 事件源图形用户界面上每个可能产生事件的组件称为事件源 2 事件监听器事件监听器是一个实现了监听器接口的对象 要想事件被监听者监听并处理 则需先将事件源注册到监听器 每个事件源 组件 有自己的事件监听器 可以有多个 3 事件处理流程当事件源产生了一个事件后 事件源就会所有监听器对象发送通知 即调用事件监听器对象的相应方法 编程人员要做的就是编写事件监听器类 创建一个事件监听器对象 并注册到相应的事件源 图7 3Java事件处理机制 Java的事件处理机制是一个委托事件模型 如图所示 事件源注册的方法如下 publicvoidaddActionListener ActionListenerl 添加特定的动作 监听接收来自事件源的动作事件 如果l为空 不会产生任何动作 监听者实现的接口为ActionListener接口 接口ActionListener来自包java awt event 在此接口中只有一个方法 publicvoidactionPerformed ActionEvente 当事件对象e发生时 调用此方法 监听者就需要实现这个方法 Java中常用的事件和相应的事件监听者如表9 2所示 常用事件及其监听者 事件处理机制 在JDK1 0中采用向上传递机制 Frame Panel Button ActionEvent JDK1 2中的事件处理机制 Frame Panel Button PanelandFrameeventhandlers actionPerformed ActionEvente Actionevent 监听器方式 2020 1 26 10 1 让包含 事件源 的对象来担任监听者通常情况下监听者是由包含事件源的对象来担任 例g111 在一个窗口中摆放两个组件 一个命令按钮 一个文本区 当按下命令按钮后 将文本区内中的字体颜色设置为红色 2020 1 26 11 简单的事件处理程序 已加入事件处理 importjava awt importjava awt event publicclassg111extendsFrameimplementsActionListener staticapp13 1frm newapp13 1 staticButtonbt newButton 设置字体颜色 staticTextAreata newTextArea 字体颜色 5 20 publicstaticvoidmain Stringargs bt addActionListener frm 把监听者frm向事件源bt注册frm setTitle 操作事件 编写监听器类 创建该监听器对象的类必须声明实现相应的接口 创建一个事件监听器对象并将该对象添加到事件源 2020 1 26 12 frm setLayout newFlowLayout frm setSize 260 170 frm add ta frm add bt frm setVisible true publicvoidactionPerformed ActionEvente ta setForeground Color red 在监听器类中实现接口中需要的方法 方法中可以使用ActionEvent对象判断事件 2020 1 26 13 例13 1 续 图13 2用事件处理设置字符的颜色 从本例中可以概括出事件处理的步骤 1 引入系统事件类包 如importjava awt event 2 在定义类的同时声明实现事件监听器接口 如implementsActionListener 3 在方法中调用事件源对象的addActionListener注册事件监听器方法 给事件源对象注册事件监听器 如btn addActionListener frm 这里frm为包含 事件源 的对象来担任监听者 4 实现actionPerformed事件接口方法 ActionListener接口中的方法一定要实现 即编写事件处理代码以响应事件的发生 当单击按钮时 系统将产生ActionEvent事件 动作事件监听器就调用actionPerformed方法处理这个事件 2020 1 26 15 2 定义内部类来担任监听者在上个例子中是让包含按钮对象bt的类g112所创建的对象frm来充当监听者 但是也可以自定义一个内部类来实现ActionListener接口 再让该类产生的对象来充当监听者 例g111改写例g112 在事件处理过程中利用内部类充当监听者 2020 1 26 16 g112 java定义内部类充当监听者importjava awt importjava awt event publicclassapp13 2 staticFramefrm newFrame 操作事件 staticButtonbt newButton 设置字体颜色 staticTextAreata newTextArea 字体颜色 5 20 publicstaticvoidmain Stringargs bt addActionListener newMyActLister frm setLayout newFlowLayout frm setSize 260 170 2020 1 26 17 frm add ta frm add bt frm setVisible true 定义内部类MyActLister 并实现ActionListener接口staticclassMyActListerimplementsActionListener publicvoidactionPerformed ActionEvente ta setForeground Color red 2020 1 26 18 Java在java awt event包中定义了许多事件类用于处理各种用户操作所产生的事件 它们都继承自java awt包中的AWTEvent类 教材中图9 13给出了事件类的继承关系 Java语言的事件处理类 事件分类 java util EventObject Java awt AWTEvent ActionEventAdjustmentEventComponentEventItemEventTextEvent ContainerEventFocusEventInputEventWindowEvent Java beans beanContext 2020 1 26 20 教材中表9 1中列出了事件类 对应的事件监听者接口与事件监听者接口里所提供的处理事件的方法这三者之间的关系 从表9 1中可以看出 并非每一个事件类只对应一个事件 根据接口的性质可知 如果要实现某个接口 必须覆盖其中的所有方法 2020 1 26 21 表9 2给出了事件源与其产生的事件对象的对应关系 表9 2AWT的组件可能产生事件的对应关系表 2020 1 26 22 接口与对应的适配器类如表9 3所示 表9 3监听者接口 Listener 与对应的适配器类 Adapter 2020 1 26 23 1 操作事件类 ActionEvent ActionEvent包含一个事件 该事件为执行动作事件ACTION PERFORMED 当用户在当前窗口中 按下按钮 Button 选择菜单项 MenuItem 在文本框 TextField 或文本区 TextArea 中输入文字后按回车键等均能触发操作事件 此时触发事件的组件便把ActionEvent类的对象传递给向它注册的监听者 请它负责处理 操作事件类的应用见教材例g113 2 文本事件类 TextEvent文本事件即代表文本区域中文本变化的事件TEXT VALUE CHANGED 在文本区域中改变文本内容 publicvoidaddTextListener TextListenerl 添加特定的文本事件 监听者接收来自文本对象的文本事件 如果l为空 那么不会抛出任何异常 而且也不会完成任何动作 publicinterfaceTextListenerextendsEventListener用于接收文本事件的监听者接口 当对象的文本发生变化时 调用监听者对象的方法 文本事件类的应用见教材例g115 接口中的方法为 publicvoidtextValueChanged TextEvente 当文本发生改变时调用 publicObjectgetSource 获取发生事件的对象 从EventObject继承来的方法 2020 1 26 26 2 窗口事件类 WindowEvent 窗口事件WindowEvent是指对窗口本身进行操作时所产生的事件 如对窗口的最大化 最小化 打开 关闭等操作 窗口事件类的应用见例g116 g117 g118 EventAdapters Adapter类实现了相应Listener接口 但所有方法体都是空的 用户可以把自己的监听器类声明为adapter类的子类 便可以只重写需要的方法 用适配器类来处理事件类有时会更方便 在适配器类中 实现了相应监听者接口中的所有方法 但不做任何操作 子类只要继承适配器类 就等于实现了相应的监听器接口 如果要对某事件的某种情况进行处理 只要覆盖相应的方法就可以了 其他方法不用再以 空语句 的形式来实现 2020 1 26 28 4 按键事件类 KeyEvent 按键事类件KeyEvent继承自InputEvent类 当用户在键盘上输入字符时便会触发此类事件 用按键事件接口KeyListener处理KeyEvent事件 使用KeyListener接口处理KeyEvent事件时 必须以类实现KeyListener接口 该接口里声明了三个方法 见表 2020 1 26 29 表9 4KeyListener接口中声明的方法 Exampleg119 常用方法如下 publicchargetKeyChar 返回按下的字符 publicintgetKeyCode 返回按下的字符的代码 publicstaticStringgetKeyText intkeyCode 返回描述这个键码的字符串 例如 HOME F1 或者 A 等 publicinterfaceKeyListenerextendsEventListener 用来接收键盘事件 使用方法addKeyListener注册 2020 1 26 30 5 鼠标事件类 MouseEvent 鼠标事件MouseEvent是一些常见的鼠标操作 如鼠标点击事件源 鼠标指针进入或离开事件源 或移动 拖动鼠标等操作 均会触发鼠标事件 表明画布或界面组件中发生的鼠标事件 包含按下鼠标 释放鼠标 单击鼠标 以及鼠标移动事件 鼠标移动和鼠标拖动 鼠标使用addMouseListener方法注册 通过MouseListener接收鼠标事件 鼠标还可以使用addMouseMotionListener方法注册 通过MouseMotionListener监听者监听鼠标移动事件 5 鼠标事件类 MouseEvent 6 选择事件 ItemEvent 选择事件中包含以事件为代表的选择项 选中状态发生变化的事件ITEM STATE CHANGED 引发的动作为 1 改变列表类List对象选项的选中或不选中状态 2 改变下拉列表类Choice对象选项的选中或不选中状态 3 改变复选按钮类Checkbox对象的选中或不选中状态 Example21 事件源对象注册的方法如下 publicvoidaddItemListener ItemListenerl 添加特定的项监听者 接收对象的选择项发生变化的事件 publicItemSelectablegetItemSelectable ItemEvent事件的方法 返回产生事件的事件源对象 publicinterfaceItemListenerextendsEventListener接收选项事件的监听者接口 当选项中事件发生时 调用监听对象的itemStateChanged方法 publicvoiditemStateChanged ItemEvente 当用户选中一项或未选中一项时 调用这个方法 2020 1 26 34 7 下拉列表框及相应的事件处理 下拉列表框 Choice 与列表框相似 它同样是一个有许多选项的选择组件 但下拉列表框中的所有选项都被折叠收藏起来 且只会将用户所选择的单个选项显示在显示栏上 要改变被选中的选项 可以单击下拉列表框右边的向下箭头 然后从伸展开的选项框中选择一个选项即可 Example22 2020 1 26 35 菜单栏设计 在Java中 一个菜单组件通常由三种菜单对象来组成 一个是菜单条 称为MenuBar 每个菜单条又包含若干个菜单 称为Menu 每个菜单中再包含若干个菜单项 称为MenuItem Example20 2020 1 26 36 一 条式菜单要创建一个菜单系统 首先要有一个框架Frame 在框架中放置一个菜单条MenuBar 在菜单条上添加若干个菜单Menu 每个菜单上再添加若干个菜单项MenuItem 这三者之间的关系如图 2020 1 26 37 2020 1 26 38 二 弹出式菜单弹出式菜单是在某个组件上单击鼠标右键时 弹出的一个供选择的菜单 弹出式菜单也称快捷菜单 弹出式菜单是一种独立的菜单 它附着在某一组件或容器上 2020 1 26 39 8 滚动条设计及相应的事件处理 滚动条 Scrollbar 是非常简单而常用的组件 它一般有两个作用 一是作为滑块使用 用其代表数据完成某些操作 另一方面是用来实现窗口的滚

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论