环境:myeclipse10 windowsXP jdk1.7 jre7
.net程序员初学java,.net里简单直观的事件处理在java里变得复杂许多。今天自己简单包装了一下自定义事件处理代码,共三个类。首先是事件参数类:package fEvent;
import java.util.*;public class FEventArgs extends java.util.EventObject{

protected Object source;
protected String[] strings;
protected double[] numbers;

public Object _GetSource(){
return source;
}

public double[] _GetNumbers(){
return numbers;
}

public String[] _GetStrings(){
return strings;
}

    public FEventArgs(Object source,String[] s,double[] d)
    {
        super(source);
        this.source = source;
        strings = s;
        numbers = d;
    }
}这里的重点是事件参数的选择,一个事件发送对象:source,一个字符串数组,一个双精度数组(可以兼做整形用)。这样的配置我想可以满足绝大多数事件参数传递需求了。第二个类:事件监听类public class FEventListener implements java.util.EventListener{
    //这里是当事件发生后的响应过程
    public void EventActivated(FEventArgs args)
    {
        
    }
}不直接使用FEventListener类,而是从它派生一个新类并重写EventActivated,在里面添加自己的事件处理代码。第三个类:事件类import java.util.*;public class FEvent { private Vector Listeners = new Vector();

public synchronized void Add(FEventListener l){
Listeners.addElement(l);
}

public synchronized void Remove(FEventListener l){
Listeners.removeElement(l);
}

public void Start(Object sender,String[] s,double[] d){
        Vector tempVector = null;
        
        FEventArgs e = new FEventArgs(sender,s,d);
        
        synchronized(this)
        {
            tempVector = (Vector)Listeners.clone();
            
            for(int i=0;i<tempVector.size();i++)
            {
             FEventListener l=(FEventListener)tempVector.elementAt(i);
                l.EventActivated(e);
            }
        }
}
}使用方法(代码片段):                 FEvent fe1;//定义事件                  //......
                  //定义事件处理类
  class FL1 extends FEventListener{
  public void EventActivated(FEventArgs args){
  JOptionPane.showMessageDialog(null, args._GetStrings()[0]);
  }
  }
  
                  //......
                  //添加事件
  fe1 = new FEvent();
  fe1.Add(new FL1());                  //.......
                  //触发事件
                  fe1.Start(bt_save,new String[]{"hello java!"}, null);征求下大家看法