Java-GUI编程中的事件处理机制详细讲解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JavaGUI编程中的事件处理机制详细讲解(1)1)事件:用户对程序的某一种功能性操作。Java中的事件主要有两种:1.组件类事件componentEvent、ContainerEvent、WindowEvent、FocusEvent、PaintEvent、MouseEvent共六大类,它们均是当组件的状态发生变化时产生。2.动作类事件ActionEvent、TextEvent、AdjustmentEvent、ItemEvent共四类。它们均对应用户的某一种功能性操作动作。Java中的事件类都包含在JDK的Java.awt.event包中。2)事件编程:用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对应的事件发生时由系统自动调用。3)事件委托授权处理模型JDK1.1以上版本实现了事件委托授权处理模型的机制。①事件源:产出事件的组件。②监听器:对组件所产生的事件作出具体响应的代吗,即事件产出与处理分别由两个不同类(它们可以分别放在不同的程序中)加以编程实现。③事件处理机制:AWT组件自身不编程处理相应的事件,面是交由事件监听器(它可以是组件所在的容器类或另外的Java程序类,只要它们实现了相关的事件监听器接口即可)处理(事件授权处理模型)。④事件处理的包:java.awt.event包,它提供AWT事件所需的类和接口ActionEvent类对应ActionListener接口;MouseEvent类对应MouseMotionListener接口和MouseListener接口;WindonEvent类对应WindonListener接口---即发生了XXXEvent类型的事件,那么处理该事件的接口为XXXListener);它们的父类为EventObject类。各个事件类的说明:EventObject:所有事件类的超类最重要的方法--getSource(),返回产生某事件的对象AWTEvent:所有AWT事件类的超类最重要的方法--getID(),返回某事件的ID号,事件的ID是一个整数,它指定事件的类型,例如按钮事件或鼠标点击事件ActionEvent:激活组件时发生的事件AdjustmentEvent:调节可调整的组件(如移动滚动条)时发生的事件ComponentEvent:操纵某组件时发生的一个高层事件ContainerEvent:向容器添加或删除组件时发生InputEvent:由某输入设备产生的一个高层事件ItemEvent:从选择项,复选框或列表中选择时发生KeyEvent:操作键盘时发生MouseEvent:操作鼠标时发生PaintEvent:描绘组件时发生的一个事件TextEvent:更改文本时发生WindowEvent:操作窗口时发生的事件,如最大化或最小化某一窗口。4)事件编程的基本原则:事件处理的类代码要对某一类事件加以处理,则应实现它们所对应的接口,并且给出该接口中定义的全部事件响应函数的功能实现(重写其函数体);然后在创建组件时注册该事件的监听器(响应者)。5)事件注册:事件源通过对特定的事件进行注册,以指定该事件的监听器(响应者)是谁。6)事件注册函数:函数名由“add+事件类型对应的监听器接口名称”组成;函数参数为监听器对象(实现事件响应的类的对象,如容器组件自身响应该事件,则监听器对象应用this代表)。publicvoidaddlistenerType(listenerTypeListenerObj){}7)事件编程步骤:①实现某一事件的监听器接口(定义事件处理类并实现监听器接口)。②在事件处理类中重写(实现)其事件处理的函数体。③在创建AWT组件时注册事件处理代码以指定该事件的监听器(响应者)是谁。publicclassButtonActionEventextendsAppletimplementsActionListener,MouseMotionListener,MouseListener{publicvoidinit(){this.addActionListener(this);this.addMouserMotionListener(this);this.addMouseListener(this);}publicvoidactionPerFormed(ActionEventevent){if(event.getSource()==SourceObject){//利用事件响应函数中的事件对象获取事件产生时的相关信息}elseif(event.getActionCommand()==组件的标签名字符文字{}}publicvoidmouseDragged(MouseEventevent){//利用事件响应函数中的事件对象获取事件产生时的相关信息intx=event.getX();inty=event.getY();}publicvoidmouseMove(MouseEventevent){}}8)事件编程的基本规则:(1)组件对事件的响应形式:忽略它(本类不实现对应的监听器接口)或编程事件函数以处理它(可根据应用需要替换某一个组件的相应缺省事件处理函数,从而响应用户对该组件的操作。本类实现某类事件对应的监听器接口,并实现对应的响应函数),也可屏蔽它(将其事件响应函数体置空)。(2)事件响应类(监听器)可以实现多个监听器接口,以响应多组不同事件,从而可使同一个组件可以注册多种事件。(3)利用事件响应函数中的事件对象获取事件产生时的相关信息(event.getSource())事件源对象,event.getX(),event.getY(),事件产生时的鼠标位置,event.getActionCommand(),获取组件的字符串名称。9)各个事件监听器接口ActionListener使用它的常见AWT类Button,List,TextField接口定义的方法publicvoidactionPerformed(ActionEvente)添加到组件的方法Obj.addActionListener(ActionListenerl)AdjustmentListner使用它的常见AWT类ScrollBar接口定义的方法publicvoidadjustmentValueChanged(AdjustmentEvente)添加到组件的方法Obj.addAdjustmentListener(AdjustmentListenerl)ComponentListener使用它的常见AWT类接口定义的方法publicvoidcomponentResized(ComponentEvente)publicvoidcomponentMoved(ComponentEvente)publicvoidcomponentShown(ComponentEvente)publicvoidcomponentHidden(ComponentEvente)添加到组件的方法Obj.addComponentListener(ComponentListenerl)ContainerListener使用它的常见AWT类接口定义的方法publicvoidcomponentAdded(ContainerEvente)publicvoidcomponentRemoved(ContainerEvente)添加到组件的方法ItemListener使用它的常见AWT类Checkbox,Choice,List接口定义的方法publicvoiditemStateChanged(ItemEvente)添加到组件的方法FocusListener使用它的常见AWT类接口定义的方法publicvoidfocusGained(FocusEvente)publicvoidfocusLost(FocusEvente)添加到组件的方法KeyListener使用它的常见AWT类接口定义的方法publicvoidkeyTyped(KeyEvente)publicvoidkeyPressed(KeyEvente)publicvoidkeyReleased(KeyEvente)添加到组件的方法MouseListener使用它的常见AWT类接口定义的方法publicvoidmouseClicked(MouseEvente)publicvoidmousePressed(MouseEvente)publicvoidmouseReleased(MouseEvente)publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)添加到组件的方法MouseMotionListener使用它的常见AWT类接口定义的方法publicvoidmouseDragged(MouseEvente)publicvoidmouseMoved(MouseEvente)添加到组件的方法TextListener使用它的常见AWT类TextField,TextArea接口定义的方法publicvoidtextValueChanged(TextEvente)添加到组件的方法WindowListener使用它的常见AWT类接口定义的方法publicvoidwindowOpened(WindowEvente)publicvoidwindowClosing(WindowEvente)publicvoidwindowClosed(WindowEvente)publicvoidwindowIconified(WindowEvente)publicvoidwindowDeiconified(WindowEvente)publicvoidwindowActivated(WindowEvente)publicvoidwindowDeactivated(WindowEvente)添加到组件的方法10)事件适配器由于事件监听器接口是Abstract类型,意谓着实现该接口的类应全部实现其各个成员函数,但实际应用中可能只需处理某些事件响应代码;此时再采用实现事件监听器接口可能会导致编程复杂。JDK中提供事件适配器方式来实现事件编程。①每一种监听器接口有相应的适配器类,程序员只需让事件处理类从某一适配器类派出而不采用实现监听器接口的方式,这样仅需重写用户感兴趣的相应函数体代码。各个事件监听器接口相相应的事件适配器类如下:WindowListener------WindowAdapterMouseListener-----MouseAdapterMouseMotionListener-----MouseMotionAdapter。②在事件注册时,应将监听器设为适配器的派生类(子类)对象,该适配器类中事件响应函数将被执行。(责任编辑:龚勋)下面笔者以一个程序为例,来介绍如何编写具有“纯”JAVA的程序。该程序的关键语句都有解释:importjava.awt.*;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importcom.sun.java.swing.*;publicclassmyGUIextendscom.sun.java.swing.JFrame{//此处设置环境常量,如:字体,颜色等略去。com.sun.java.swing.JPanelMainPanel;com.sun.java.swing.JPanelTopPanel;com.sun.java.swing.JButtonClearButton;com.sun.java.swing.JButtonSearchButton;com.sun.java.swing.JTextFieldSearchText;//构造器:对setMenu()和setGUI()数椐和调用的初始化和实例化publicmyGUI(){super(IdealGUI);addWindowListener(newWind

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功