java 自定义事件的触发及监听

[复制链接]
查看11 | 回复2 | 2008-4-3 21:47:19 | 显示全部楼层 |阅读模式
JAVA事件响应机制1,先自定义一个事件public class MyEvent extends java.util.EventObject{
public MyEvent(Object source)
{
super(source);
}}2,再自定义一个监听器public class MyListener implements java.util.EventListener{ //这里是当事件发生后的响应过程
public void EventActivated(MyEvent me)
{
System.out.println("事件已经被触发");
}}3,以下这个类为触发事件的事件源public class MyObject {
private Vector vectorListeners=new Vector();
public synchronized void addMyListener(MyListener ml)
{
vectorListeners.addElement(ml);
}
public synchronized void removeMyListener(MyListener ml)
{
vectorListeners.removeElement(ml);
}
protected void activateMyEvent()
{
Vector tempVector=null;
MyEvent e=new MyEvent(this);
synchronized(this)
{
tempVector=(Vector)vectorListeners.clone();
for(int i=0;ilisteners = new HashSet();public void action(){System.out.println("First begin");}private class FirstThread implements Runnable{public void run() {while (true){action();for (MyListener sl : listeners){sl.begin(First.this);}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}}public void start(){new Thread(new FirstThread()).start();}public void addMyListener(MyListener ml){if (ml != null){listeners.add(ml);}}}public class TestEvent{public static void main(String args[]){First first = new First();Control c = new Control();first.addMyListener(c);c.newGame(first);}}运行结果First beginsecond go onFirst beginsecond go onFirst beginsecond go onFirst beginsecond go on
回复

使用道具 举报

千问 | 2008-4-3 21:47:19 | 显示全部楼层
创建一个监视器喽
回复

使用道具 举报

千问 | 2008-4-3 21:47:19 | 显示全部楼层
其实这东西归咎到底就是一个监听者模式,自己写一个就行了~关于监听者模式网上的资料比较多,自己查查就行了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行