您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第7章 Java事件处理
第7章Java事件处理学习导读第六章学习了如何设计Java图形界面接下来,介绍Java的事件处理机制,例如如何在程序中接收并处理如键盘按键和鼠标点击等“事件”课程结构事件处理模型按钮事件鼠标事件键盘事件窗口事件其他事件7.1事件处理模型1、基于继承的事件处理模型(JDK1.0)JDK1.0中,事件处理是基于继承的,事件先发送到组件,然后沿容器层次向上传播。没有被组件处理的事件会自动地继续传播到组件的容器。如图:7.1事件处理模型具体的处理方法调用action()方法或handleEvent()方法来获取程序运行时发生的事件,所有组件发生的事件都在此方法中处理。见书P136例7。17.1事件处理模型基于继承的事件处理模型的特点①事件只能由产生这个事件的组件或包含这个组件的容器处理。②大量的CPU周期浪费在处理不相关的事件上。任何对于程序来说不相关或者并不重要的事件会沿容器层次一路传播,直到最后被抛弃,③为了处理事件,必须创建一个庞大的handleEvent()方法,该方法中包含的大量的逻辑判断,给编程带来困难。不能为每一种事件特定指定操作动作7.1事件处理模型2、基于代理的事件处理模型(JDK1。1)在这个模型中,事件被直接送往产生这个事件的组件,对于每一个组件注册一个或多个称为监听者的类,这些类包含事件处理器,用来接收和处理这个事件。监听者就是实现了Listener接口的类。事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口7.1事件处理模型在Button对象上用鼠标进行点击时,将发送一个ActionEvent事件。这个ActionEvent事件会被使用addActionListener()方法进行注册的所有ActionListener的actionPerformed()方法接收。见书P137例7。27.1事件处理模型基于代理的事件处理模型的特点①事件不会被意外地处理。在层次模型中,一个事件可能传播到容器,并在非预期的层次被处理。②有可能创建并使用适配器(adapter)类对事件动作进行分类。③有利于把工作分布到各个类中。重点学习这种事件处理模型7.1事件处理模型3、事件事件处理的三要素。(1)事件源事件源是一个事件的产生者,如按钮、窗口及文本域等。(2)事件类型Java中所有的事件都封装成一个类,这些事件类被集中在java.awt.event包,所有的事件类均继承了AWTEvent类和一个方法——getSouce()方法,该方法返回发生事件的对象。(3)事件监听器不同的类型事件发生后,由事件监听器接收事件并调用相应的事件处理方法。所有的事件监听器实际上都是一个java.awt.event包中的接口,引入了java.util.EventListener接口。不同事件类型的监听器具有不同的方法。见书P138页表7-17.1事件处理模型事件处理步骤①程序加入java.awt.event包:•Importjava.awt.event;②给所需的事件源对象注册事件监听器:•事件源对象.addXXXListener(XXXListener);③实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法例:b2.addActionListener(this)见例7-37.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。57.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。77.3鼠标事件的处理MouseMotionListener(或者MouseMotionAdapter)的主要方法MouseMoved(MouseEvente)鼠标移动时的处理方法MouseDraged(MouseEvente)鼠标拖动时的处理方法见例7。8使用Adapter见例7。97.4键盘事件的处理在具有键盘焦点的组件中按下或释放键盘等操作时,都发生键盘事件键盘事件对应的事件类是KeyEvent类KeyEvent类主要方法:getKeyCode()获得按下或释放的键代码getKeyText()获得按下或释放的键的字符串7.4键盘事件的处理键盘事件对应的事件监听器为:KeyListener或KeyAdapter主要方法:KeyPressed(KeyEvente)按下键盘时的处理方法KeyReleased(KeyEvente)释放键盘时的处理方法见例7。117.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事件处理的方法动作事件选项事件鼠标事件键盘事件窗口事件调整事件本章小结在具体用Java进行事件处理时,主要掌握以下几个步骤:第一步,程序加入java.awt.event包importjava.awt.event;第二步,给所需的事件源对象注册事件监听器,事件源对象.addXXXListener(XXXListener);第三步,实现相应的方法。如果某个监听器接口包含多个方法,则需要实现所有的方法。在方法的实现中,判断事件性质,进行相应的处理。
本文标题:第7章 Java事件处理
链接地址:https://www.777doc.com/doc-5971253 .html