您现在的位置是:首页 >

java事件处理模型三要素 java的事件处理

火烧 2022-01-25 07:52:31 1033
java的事件处理   在JAVA程序设计中 事件的处理是非常重要的 尤其是在需要自定义事件和设计JavaBea 时 对事件的处理过程有一个完整的认识对于编程是很有帮助的     下面用一个演示性的例

java的事件处理  

java事件处理模型三要素 java的事件处理
  在JAVA程序设计中 事件的处理是非常重要的 尤其是在需要自定义事件和设计JavaBean时 对事件的处理过程有一个完整的认识对于编程是很有帮助的     下面用一个演示性的例子来说明事件及其处理过程     一 事件的组成   如果想要自定义一个事件 则必须提供一个事件的监听接口以及一个事件类 在JAVA中监听接口继承java util EventListener 事件类继承java util EventObject 很多基本的事件在编程环境中都已经提供可以很方便使用 但是在自定义事件中必须要要了解这些     下面是一个事件类的代码 事件类可以向用户处理程序提供被监听类的信息  import java util *;  public class PropertyEvent extends EventObject {  public PropertyEvent(){}  }     下面是监听接口的代码  import java util *;    public interface PropertyListener extends EventListener {  public void propertyChanged(PropertyEvent propertyEvent);  }      二 事件的处理机制  下面是一段简要的被监听类代码 通过代码分析事件处理过程  import java util *;    public class Exam {  private int property;  //listeners用来存放已注册的监听对象  private Set listeners= new HashSet();     public void addListener(PropertyListener propertyListener){  //listeners必须保证只能被一个线程访问  synchronized(listeners){  listeners add(propertyListener);  }  }  public void firePropertyChange(){  Iterator iterator;  synchronized(listeners){  //将listeners中的类名放到iterator  iterator = new HashSet(erator();  }     //创建事件类  PropertyEvent propertyEvent = new PropertyEvent();  while(iterator hasNext()){  PropertyListener propertyListener = (propertyListener) iterator next();  //调用用户的事件处理程序  propertyListener propertyChanged(propertyEvent);  }  }  }     当属性值发生变化时 首先进行内部处理调用firePropertyChange方法 产生一个事件对象然后用事件对象为参数来调用用户的事件处理程序      三 事件处理的使用   基本用法  public Exam exam;  exam addListener(this);  public void propertyChange(PropertyEvent event){ }     注 exam是被监听对象 this为监听对象 是已经实现了接口方法的当前类 addListener  将当前类注册到listeners      一个被监听对象可以有多个监听对象    exam addListener(listener );  exam addListener(listener );   这样当exam的property发生变化时 actionListener 和actionListener 的处理程序都会  被调用 当然listener 和listener 必须都是已实现接口方法的类      被监听的对象也可以是实现了方法的接口  exam addListener(  new PropertyListener(){  //用户定义事件处理过程  public void propertyChange(PropertyEvent event){     }  ); lishixinzhi/Article/program/Java/JSP/201311/19209  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码