《Java与面向对象程序》-11.3 GUI事件处理_第1页
《Java与面向对象程序》-11.3 GUI事件处理_第2页
《Java与面向对象程序》-11.3 GUI事件处理_第3页
《Java与面向对象程序》-11.3 GUI事件处理_第4页
《Java与面向对象程序》-11.3 GUI事件处理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

学习目标了解学习GUI的事件处理机制,知道事件源、事件对象和事件监听器。主要内容GUI事件处理机制键盘事件处理鼠标事件处理GUI事件处理概述事件处理在图形用户界面的程序设计中是必不可少的,在前面的案例11-1中,只进行了界面的设计,并没有真正实现其操作功能。要想让我们设计的GUI程序能够响应用户的操作,真正实现其功能,必须为其添加事件处理代码。本小节将学习GUI的事件处理机制,并对常见的GUI事件处理进行讲解和演示1.事件处理机制在GUI程序运行时,系统应该能够识别用户对界面通过鼠标或键盘所进行的操作并做出响应。通常键盘或鼠标操作会引起一个系统预先定义好的事件,程序只需要定义每个特定事件发生时应该做出的响应即可。在Java中,除了键盘和鼠标操作外,系统的状态改变、标准图形界面元素等都可以引发事件。事件通常包含3个组件:事件源事件对象事件监听器1.事件处理机制事件源顾名思义,事件源就是事件的源头,即事件产生的地方。Java中的事件源指的是界面组件。例如,单击一个命令按钮时,这个按钮就是事件源,它会产生一个ActionEvent事件对象,该对象包含有事件的信息1.事件处理机制事件对象在Java中,每一个事件都是对象,java.util.EventObject是所有事件对象的根类;与GUI程序相关的事件对象的根类是java.awt.AWTEvent,它是EventObject的直接子类1.事件处理机制事件监听器在java中,每一个事件对象都有其事件发起者和事件使用者。事件发起者就是事件源,而事件使用者就是事件监听器。为了在使用事件时能够访问到事件源,在每一个事件对象中都保存了一个指向事件源的引用。操作系统捕获事件及与其相关的数据,如事件发生的时间和事件类型(按键、单击鼠标),然后,数据被传递给事件监听器进行处理。事件处理程序就是处理事件的代码(方法),它将事件对象作为一个参数接收过来。1.事件处理机制一个源(Source)产生一个事件(Event),并把它送到一个或多个监听器(Listener)2.GUI事件处理事件适配器类在Java中,针对一些事件监听器接口,系统定义了对应的实现类,称为事件适配器类。有了事件适配器类,事件监听器类只要继承事件适配器类,仅重写需要的方法就可以处理某个特定的事件,这样会使程序变得更加简洁。常见事件监听器接口与对应的事件适配器类事件名称事件侦听器接口事件适配器类ComponentEventComponentListenerComponentadapter(主件适配器)ContainerEventContainerListenerContainerAdapter(容器适配器)KeyEventKeyListenerKeyAdapter(键盘适配器)MouseEventMouseListenerMouseAdapter(鼠标适配器)MouseEventMouseMotionListenerMouseMotionAdapter(鼠标移动适配器)WindowEventWindowListenerWindowAdapter(窗口适配器)FocusEventFocusListenerFocusAdapter(焦点适配器)2.GUI事件处理事件监听器接口Java中常用的事件监听器接口及其定义的抽象方法(即事件处理器)事件类监听器接口监听器接口定义的抽象方法ActionEventActionListeneractionPerformed(ActionEvente)AdjustmentEventAdjustmentListeneradjustmentValueChanged(AdjustmentEvente)ItemEventItemListeneritemStateChanged(ItemEvente)KeyEventKeyListenerkeyTyped(KeyEvente);keyPressed(KeyEvente);keyReleased(KeyEvente)MouseEventMouseListener

mouseClicked(MouseEvente);mouseEntered(MouseEvente)mouseExited(MouseEvente);mousePressed(MouseEvente)mouseReleased(MouseEvente)MouseMotionListenermouseDragged(MouseEvente)mouseMoved(MouseEvente)TextEventTextListenertextValueChanged(TextEvente)WindowEventWindowListenerwindowActivated(WindowEvente);windowClosed(WindowEvente)windowClosing(WindowEvente);windowDeactivated(WindowEvente)windowDeiconified(WindowEvente);windowIconified(WindowEvente)windowOpened(WindowEvente)2.GUI事件处理动作事件监听器接口(ActionListener)ActionListener用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的addActionListener方法向该组件注册。在发生操作事件时,调用该对象的actionPerformed方法2.GUI事件处理【例11-15】学生成绩管理系统登录功能的实现请思考:

程序中应处理哪种事件?

试着为菜单项和各功能按钮添加事件监听器(动作事件监听),并编写事件处理代码,完善程序功能。2.GUI事件处理鼠标事件监听接口(MouseListener)MouseListener是用于接收组件上的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。鼠标监听常用方法返回类型方法声明功能描述voidmouseClicked(MouseEvente)鼠标按键在组件上单击(按下并释放)时调用voidmouseEntered(MouseEvente)鼠标进入到组件上时调用voidmouseExited(MouseEvente)鼠标离开组件时调用voidmousePressed(MouseEvente)鼠标按键在组件上按下时调用voidmouseReleased(MouseEvente)鼠标按钮在组件上释放时调用2.GUI事件处理【例11-16】实现动作事件及鼠标事件处理的程序2.GUI事件处理键盘事件监听接口(KeyListener)键盘监听类常用方法返回类型方法声明功能描述voidkeyPressed(KeyEvente)按下某个键时调用此方法。voidkeyReleased(KeyEvente)释放某个键时调用此方法。voidkeyTyped(KeyEvente)键入某个键时调用此方法。2.GUI事件处理【例11-17】实现键盘事件监听和处理的程序2.GUI事件处理窗口事件监听接口(WindowListener)窗口事件类常用方法返回类型方法声明功能描述voidwindowActivated(WindowEvente)将

Window设置为活动

Window时调用voidwindowClosed(WindowEvente)因对窗口调用

dispose而将其关闭时调用voidwindowClosing(WindowEvente)用户试图从窗口的系统菜单中关闭窗口时调用voidwindowDeactivated(WindowEvente)当

Window不再是活动

Window时调用voidwindowDeiconified(WindowEvente)窗口从最小化状态变为正常状态时调用voidwindowIconified(WindowEvente)窗口从正常状态变为最小化状态时调用voidwindowOpened(WindowEvente)窗口首次变为可见时调用2.GUI事件处理【例11-18】实现窗口事件处理的程序2.GUI事件处理【例11-18】实现窗口事件处理的程序——程序实现分析用实现监听器接口的方法定义MyWin:classMyWinimplementsWindowListener必须重写接口中的七个方法程序中只用到了响应关闭动作的方法,其他方法都没有用到,如果用这种方法,就必须把这七个方法全部重写。用继承适配器类的方法定义MyWin:简化代码编写classMyWinextendsWindowAdapter只要重写需要的实现关闭动作的方法即可因为WindowAdapter已经实现了WindowListener接口,并覆盖了其中的所有方法3.案例—Java简易计算器设计案例描述运用所学GUI编程知识设计一个简易计算器,要求能实现简单的加减乘除四则运算。3.案例—Java简易计算器设计实现思路计算器窗体整体上使用BorderLayou

温馨提示

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

评论

0/150

提交评论