GUI程序设计事件监听.ppt_第1页
GUI程序设计事件监听.ppt_第2页
GUI程序设计事件监听.ppt_第3页
GUI程序设计事件监听.ppt_第4页
GUI程序设计事件监听.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

Java GUI程序设计(二),事件处理基础 事件处理机制 窗口事件处理 事件类型和相应的接口及其方法 事件适配器 处理事件的方式,事件处理,对于GUI程序与用户操作的交互功能,Java使用一种自己的专门方式,称之为事件处理机制。 事件(Event) 一个对象,它描述了发生什么事情 事件源(Event source) 发生事件的组件 事件处理器:负责处理事件的方法。 事件处理方法(Event handler) 能够接收、解析和处理事件类对象、实现和用户交互的方法,awt中的事件处理方式,委派式事件处理(delegation)-个别的组件将整个事件处理委托给特定的对象,当该组件发生指定的事件时,就通知所委托的对象,有这个对象来处理这个事件。这个受委托处理事件的对象称为事件倾听对象(event listener) 每个组件均可以针对特定的事件指定一个或多个事件倾听对象,由这些事件倾听对象负责处理事件,awt事件分类,EventObject,ActionEvent,AdjustmentEvent,AWTEvent,ItemEvent,TextEvent,ContainerEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,ComponentEvent,事件监听器,Java程序对事件进行处理的方法是放在一个类对象中,这个类对象就是事件监听器。 我们必须将一个事件监听器对象同某个事件源的某种事件进行关联,这样,当某个事件源上发生了某种事件后,关联的事件监听器对象中的代码才会被执行。 我们把这个过程称为向事件源注册事件监听器对象。,事件监听器,MouseEvent 类对应鼠标事件,包括鼠标按下,鼠标释放,鼠标点击等。 WindowEvent 类对应窗口事件,包括用户点击了关闭按钮,窗口得到与失去焦点,窗口被最小化等。 ActionEvent 类对应一个动作事件。它不是代表一个具体的动作,而是一种语义,如按钮或菜单被单击,单行文本框中按下回车键等都可以看做是ActionEvent事件。 如果一个事件监听器类只用在一个组件上注册监听器事件对象,为了让程序代码更加紧凑,我们可以使用匿名内部类来产生这个事件监听器。,7,按钮单击事件示例,public class MyEventTest extends Panel Button myButton = new Button(“蓝色“); . . . / 创建面板或其他 GUI 组件 MyListener myAction = new MyListener(); MyButton.addActionListener(myAction); private class MyListener implements ActionListener public MyListener() . . . / 初始化 public void actionPerformed(ActionEvent event) . . ./需要为事件进行的操作 ,实现了ActionListener接口的监听器,实现了actionPerformed方法,以便根据参数 ActionEvent 对象的信息对事件做出响应,为按钮事件 注册监听器,8,事件体系结构,事件处理例子(示例11-8), b.addActionListener(new ButtonListener(); class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e) clickCount+; t.setText(“You click the Click Me Button:“+clickCount+“ Time(s).“); ,一个事件多个处理器例子(示例11-9),b1.addActionListener(new ButtonListener1(); b2.addActionListener(new ButtonListener2();,窗口事件(示例11-10),当一个窗口被激活、撤销激活、打开、关闭、最大化、最小化时,发生窗口事件。 从WindowEvent类中创建的对象表示窗口事件。,12,AWT 事件类型 2-1,13,AWT 事件类型 2-2,14,监听器接口列表 2-1,15,监听器接口列表 2-2,事件适配器(Adapter),为简化编程,针对大多数事件监听器接口定义了相应的实现类-事件适配器类,在适配器类中,实现了相应监听器接口中所有的方法,但不做任何事情。子类只要继承适配器类,就等于实现了相应的监听器接口,只重写所需要的方法就可以了。,事件处理类和产生事件的类的关系,利用内部类来处理事件: Button b=new Button(“确定”); b.addActionListener(new AddListener(); class AddListener implements ActionListener public void actionPerformed(ActionEvent e) ,事件处理类和产生事件的类的关系(con.),用匿名类处理事件: this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); ,事件处理类和产生事件的类的关系(con.),通过其他类处理事件: public class EventHandler implements ActionListener public class TestEvent Button b=new Button(“Test”); b.addActionListener(new EventHandler(); ,事件处理类和产生事件的类的关系(con.),直接在本类里处理事件: public class Test implements ActionListener Button b=new Button(“Cancel”); b.addActionListener(this); public void actionPerformed(ActionEvent e) ,事件适配器(Adapter),一个组件上的一个动作可以产生多种不同类型的事件,因而可以向同一个事件源上注册多种不同类型的监听器。 一个事件监听器对象可以注册到多个事件源上,即多个事件源的同一事件都由一个对象统一来处理。 一个事件源上也可以注册对同一事件进行处理的多个事件监听器对象,当这一个事件发生时,各事件监听器对象依次被调用。,22,适配器类,为了使事件处理变得简单,Java 为具有多个方法的监听器接口提供适配器类。适配器类实现并提供了一个事件监听器接口中的所有的方法,但这些方法都是空方法。,private class MyMouseAdapter extends MouseAdapter private Color bgColor; public MyMouseAdapter (Color c) bgColor = c; public void mouseClicked(MouseEvent mevent) setBackground(bgColor); repaint(); ,23,多个监听器,所有AWT事件源均支持监听器的多点传送模型。 可以将同一事件发送到多个监听器对象。 需要向一个事件源添加多个监听器,以便使所有注册的监听器都能够对事件源生成的事件作出响应。,24,匿名类,class MyPanel extends Panel public MyPanel() Button bButton = new Button(“蓝色“)

温馨提示

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

评论

0/150

提交评论