如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第4章游戏的运行机制(1)——用户事件处理内容提要事件2.事件监听者Java系统中注册的用于接收特殊事件的类。不同的事件对应着不同的监听者,要想事件被监听者监听并处理,则需先将事件源注册到监听者。3.事件处理流程事件源触发事件并将事件作为一个参数传递给监听者,监听者实现某个接口中的抽象方法,从而实现对事件的处理。Java的事件处理机制是一个委托事件模型,如图7.3所示。图Java事件处理机制事件源注册的方法如下:publicvoidaddActionListener(ActionListenerl)添加特定的动作,监听接收来自事件源的动作事件,如果l为空,不会产生任何动作。监听者实现的接口为ActionListener接口,接口ActionListener来自包java.awt.event。在此接口中只有一个方法:publicvoidactionPerformed(ActionEvente)当事件对象e发生时,调用此方法。监听者就需要实现这个方法。Java中常用的事件和相应的事件监听者如表7.2所示。表常用事件及其监听者动作事件(ActionEvent)ActionEvent包含一个事件,该事件为执行动作事件ACTION_PERFORMED。触发这个事件的动作为:(1)点击按钮。(2)双击列表中的选项。(3)选择菜单项。(4)在文本框中输入回车。常用方法如下:publicStringgetActionCommand()返回引发某个事件的命令按钮的名字,如果名字为空,那么返回标签值。publicvoidsetActionCommand(Stringcommand)设置引发事件的按钮的名字,默认设置为按钮的标签。【例1】测试动作事件。源程序代码如下://程序文件名UseButton.javaimportjava.awt.*;importjava.awt.event.*;importjava.applet.*;importjava.applet.Applet;publicclassUseButtonextendsAppletimplementsActionListener{Stringstr1=newString();Buttonb1;//声明按钮对象;Buttonb2;Colorc;publicvoidinit(){b1=newButton();b2=newButton("按钮对象2");//添加事件监听者b1.addActionListener(this);b2.addActionListener(this);this.add(b1);this.add(b2);}publicvoidstart(){b1.setLabel("按钮对象1");str1=b2.getLabel();repaint();}publicvoidpaint(Graphicsg){g.setColor(c);g.drawString("引发事件的对象的标签:"+str1,40,60);}//实现接口中的方法,响应动作事件publicvoidactionPerformed(ActionEvente){Stringarg=e.getActionCommand();if(arg=="按钮对象1"){c=Color.red;str1="按钮对象1";}elseif(arg=="按钮对象2"){c=Color.blue;str1="按钮对象2";}repaint();}}单击“按钮对象1”,引发对象1的单击事件,输出结果如图7.4所示;单击“按钮对象2”,引发对象2的单击事件,输出结果如图7.5所示。图单击“按钮对象2”的输出文本事件(TextEvent)文本事件即代表文本区域中文本变化的事件TEXT_VALUE_CHANGED,在文本区域中改变文本内容。publicvoidaddTextListener(TextListenerl)添加特定的文本事件,监听者接收来自文本对象的文本事件。如果l为空,那么不会抛出任何异常,而且也不会完成任何动作。publicinterfaceTextListenerextendsEventListener用于接收文本事件的监听者接口。当对象的文本发生变化时,调用监听者对象的方法。接口中的方法为:publicvoidtextValueChanged(TextEvente)当文本发生改变时调用。publicObjectgetSource()发生事件的对象,从EventObject继承来的方法。【例2】测试文本事件。源程序代码如