环境: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);征求下大家看法
.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);征求下大家看法
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货