事件响应---面向对象之类与对象-图形界面程序设计_第1页
事件响应---面向对象之类与对象-图形界面程序设计_第2页
事件响应---面向对象之类与对象-图形界面程序设计_第3页
事件响应---面向对象之类与对象-图形界面程序设计_第4页
事件响应---面向对象之类与对象-图形界面程序设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象之图形界面设计面向对象之图形界面设计济南大学 信息学院2回顾窗口程序设计的步骤。窗口程序设计的步骤。说一说常见的顶层容器,中间容器,功能组件的类名说一说常见的顶层容器,中间容器,功能组件的类名说一说常见的布局管理器说一说常见的布局管理器济南大学 信息学院3重点:重点:事件响应实现的机制事件响应实现的机制单击事件的响应单击事件的响应鼠标事件的响应鼠标事件的响应难点:难点:事件类事件类事件监听器事件监听器关键实践:关键实践:实现一个简单运算器实现一个简单运算器实现一个实现一个”你来我就跑你来我就跑”的小程序的小程序实验一个实验一个”放烟火放烟火”的小程序的小程序本章目标济南大学 信息学院有

2、事件事件发生了一首歌响起一条小狗走过来能够捕捉声音事件的器官(耳朵),并对事件响应能够捕捉光线事件的器官(眼睛),并对事件响应一个人对应的对应的事件监听器事件监听器接收事件的对象接收事件的对象对事件的响应对事件的响应听到歌晃起脑袋看到小狗来赶紧跑装上耳朵装上眼睛济南大学 信息学院有事件事件发生了单击操作(ActionEvent)鼠标进入(MouseEntered)能够捕捉单击事件的类(ActionListenter),并对事件响应能够捕捉鼠标事件的类(MouseMotionListener),并对事件响应一个按钮对应的对应的事件监听器事件监听器接收事件的对象接收事件的对象对事件的响应对事件的响

3、应Do somethingDo something装上ActionListenter对象装上MouseMotionListener对象济南大学 信息学院事件既是基础,又是联系各个部分的桥梁。首先,有不同类型的事件可事件既是基础,又是联系各个部分的桥梁。首先,有不同类型的事件可以被组件接收到,不同类型的组件会能够接收事件类型不同。不同类型以被组件接收到,不同类型的组件会能够接收事件类型不同。不同类型的事件由不同的的事件由不同的Java类来表示,类来表示,基类是基类是java.util.EventObject, 所有的事所有的事件都是从它继承而来的件都是从它继承而来的 。事 件 通 常 包 括 用

4、 户 事 件 和 系 统 事 件事 件 通 常 包 括 用 户 事 件 和 系 统 事 件 , 其 处 理 机 制 会 涉 及 到, 其 处 理 机 制 会 涉 及 到java.awt.event和和javax.swing.event两个包,包括了如两个包,包括了如ActionEvent、ItemEvent、MouseEvent和和KeyEvent等,第三方内容也可加入其中。等,第三方内容也可加入其中。每种事件类都有一个对应的监听接口,监听接口的功能是能够监听到该每种事件类都有一个对应的监听接口,监听接口的功能是能够监听到该类事件的发生,并且能够对监听到的事件做出响应(接口中声明了一个类事件的

5、发生,并且能够对监听到的事件做出响应(接口中声明了一个或多个抽象的事件处理方法,凡是需要接收并处理事件类对象的类,都或多个抽象的事件处理方法,凡是需要接收并处理事件类对象的类,都需要实现相应的接口,在这些方法体中定义响应的操作。)需要实现相应的接口,在这些方法体中定义响应的操作。)济南大学 信息学院 java.util.EventObject java.awt.AWTEvent ActionEvent AdjustmentEvent ComponentEvent ItemEvent TextEvent ContainerEvent FocusEvent InputEvent PointEven

6、t WindowEvent KeyEvent MouseEvent 济南大学 信息学院事件对象类型事件源对象类型事件监听器接口注册和删除事件监听器的方法ActionEventButton、List、MenuItem、TextFieldActionListeneraddActionListenerremoveActioListenerAdjustmentEventScrollbarAdjustmentlisteneraddAdjustmentListenerremoveAdjustmentListenerItemEventChoice、List、CheckBox、CheckBoxMenuItem

7、ItemListeneraddItemListenerremoveItemListenerTextEventTestField、TextAreaTextListeneraddTextListenerremoveTextListenerComponentEventComponentComponentListeneraddComponentListenerremoveComponentListenerContainerEventContainerContainerListeneraddContainerListenerremoveContainerListenerFocusEventCompone

8、ntFocusListeneraddFocusListenerremoveFocusListenerKeyEventComponentKeyListeneraddKeyListenerremoveKeyListenerMouseEventComponentMouseListener addMouseListenerremoveMouseListener MouseEventComponentMouseMotionListeneraddMouseMotionListenerremoveMouseMotionListenWindowEventWindowWindowListeneraddWindo

9、wListenerremoveWindowListentener提示:提示:事件是事件是xxxxxEvent对应的监听器接口就是对应的监听器接口就是xxxxxListener。济南大学 信息学院事件监听器接口事件监听器接口中定义的方法事件监听器接口事件监听器中接口定义的方法ActionListenerActionPerformed(ActionEvent e)FocusListenerfocusGained(FocusEvnent e)focusLost(FocusEvnent e)AdjustmentlistenerAdjustmentValueChanged(AdjustmentEvent

10、 e)KeyListenerkeyPressed(keyEvent e)keyReleased(keyEvent e)ItemListenerItemStateChanged(ItemEvent e)MouseListenermouseClicked(MouseEvent e)mouseReleased(MouseEvent e)mouseEntered(MouseEvent e)mouseExited(MouseEvent e)mousePressed(MouseEvent e)TextListenerTextValueChanbed( TectEvent e)MouseMotionList

11、enermouseDragged(MouseEvent e)mouseMoved(MouseEvent e)ComponentListenerComponentHidder(ComponentEvent e)ComponentShown(ComponentEvent e)ComponentMoved(ComponentEvent e)ComponentResized(ComponentEvent e)WindowListenerwindowActivated(WindowEvent e)windowDeactivated(WindowEvent e)windowIconified(Window

12、Event e)windowDeiconified(WindowEvent e)windowClosing(WindowEvent e)windowClosed(WindowEvent e)windowOpened(WindowEvent e)ContainerListenercomponentAdded(ContainerEvent e)componentRemoved(ContainerEvent e)提示:提示:监听器对特定事件的响应操作应该定义在某特定的方法中。监听器对特定事件的响应操作应该定义在某特定的方法中。济南大学 信息学院第一步:确定要响应的第一步:确定要响应的事件事件(Act

13、ionEvent,MouseEvent等中的哪一种等中的哪一种)第二步:创建第二步:创建事件监听器类事件监听器类(implements拟响应事件对应的监听接口,拟响应事件对应的监听接口,将要响应的操作定义在监听器接口中定义的对应方法体内。)将要响应的操作定义在监听器接口中定义的对应方法体内。)第三步:根据第二步创建一个具体的监听器对象,然后为接收事件的组第三步:根据第二步创建一个具体的监听器对象,然后为接收事件的组件添加上该件添加上该事件监听器对象事件监听器对象(调用组件的调用组件的addXXXListener方法来完成方法来完成)。济南大学 信息学院为窗口中的按钮添加单击事件响应,当单击该按

14、钮的时候,在控制台输为窗口中的按钮添加单击事件响应,当单击该按钮的时候,在控制台输出出“您单击了按钮组件!您单击了按钮组件!”的信息。的信息。分析: (界面实现过程略)1、事件是ActionEvent。2、对应的监听器接口是 ActionListener,响应的操作 是输出一行信息。3、监听器安装在按钮组件上。济南大学 信息学院public class ActionDemo JFrame jf; JButton jb; ActionDemo() jf = new JFrame(ActionDemo); jf.setSize(320,200); jf.setLayout(new BorderLa

15、yout(); jf.setVisible(true); jb = new JButton(按钮按钮); jf.add(jb,North); MyListener l = new MyListener(); jb.addActionListener(l); public static void main(String args) new ActionDemo(); class MyListener implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(您单击了按钮组件!);

16、 第一步:创建监听器类(其关键是第一步:创建监听器类(其关键是implements implements ActionListenerActionListener接口)。接口)。第二步:在第二步:在actionPerformedactionPerformed方法中创建响方法中创建响应事件操作(注意:不同事件的响应操应事件操作(注意:不同事件的响应操作应该写在其对应的方法体中)。作应该写在其对应的方法体中)。第三步:创建一个监听器对象。第三步:创建一个监听器对象。第四步:为组件第四步:为组件jb jb添加上该监听器对象。添加上该监听器对象。思考一下:思考一下:能否让能否让ActionDemoAc

17、tionDemo类自己类自己implements implements ActionListenerActionListener?能否让多个按?能否让多个按钮使用同一个监听器对象?钮使用同一个监听器对象?济南大学 信息学院为窗口中的按钮添加单击事件响应,当单击该按钮的时候,在控制台输为窗口中的按钮添加单击事件响应,当单击该按钮的时候,在控制台输出出“您单击了按钮组件!您单击了按钮组件!”的信息。的信息。当鼠标进入主窗口的是时候,在控当鼠标进入主窗口的是时候,在控制台输出制台输出“鼠标已经进入主窗口鼠标已经进入主窗口”,并且显示鼠标当时的坐标,并且显示鼠标当时的坐标,分析: (界面实现过程略)1

18、、事件是MouseEvent。2、对应的监听器接口是 MouseListener,响应的操作 是输出一行信息。3、监听器安装在JFrame组件上。济南大学 信息学院public class ActionDemo JFrame jf; JButton jb; ActionDemo() jf = new JFrame(ActionDemo); jf.setSize(320,200); jf.setLayout(new BorderLayout(); jf.setVisible(true); jb = new JButton(按钮按钮); jf.add(jb,North); MyListener2 l2 = new MyListener2(); jf.addActionListener(l2); public static void main(String args) new ActionDemo(); class MyListener2 implements MouseListener public void mouseEntered(MouseEvent e) System.out.println(“); 第一步:创建监听器类(其关键是第一步:创建监听器类(其关键是implements implements MouseListenerMouse

温馨提示

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

评论

0/150

提交评论