我们来看看上述自定义事件框架的一个测试。给一个发布者定义两个事件MyEvent1和MyEvent2,并分别给它们登记一个和两个收听者。
package starrow.test;
import starrow.util.EventArg;
import starrow.util.EventPublisher;
public class MyEventPublisher extends EventPublisher{
public void run(){
System.out.println("A MyEventPublisher publisher1 is running.");
System.out.println("Publisher1 fires MyEvent1.");
this.fireEvent("MyEvent1");
System.out.println("Publisher1 fires MyEvent2.");
EventArg ea=new EventArg(this);
ea.put("name", "MyEvent2").put("x", 10).put("y", 30);
this.fireEvent("MyEvent2",ea);
}
}
package starrow.test;
import starrow.util.*;
public class MyEvent1Listener1 implements IEventListener{
@Override
public void handleEvent(EventArg ea) {
System.out.println("MyEvent1 handled in MyEvent1Listener1.");
}
}
package starrow.test;
import starrow.util.*;
public class MyEvent2Listener1 implements IEventListener{
@Override
public void handleEvent(EventArg ea) {
System.out.println("MyEvent2 handled in MyEvent2Listener1.");
}
}
package starrow.test;
import starrow.util.*;
import starrow.util.IEventListener;
import java.util.Map.Entry;
public class MyEvent2Listener2 implements IEventListener{
@Override
public void handleEvent(EventArg ea) {
System.out.println("MyEvent2 handled in MyEvent2Listener2. Event information: ");
for (Entry
entry : ea.getInfo().entrySet()){
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
package starrow.test;
import starrow.util.*;
public class MyEventTester {
public static void main(String[] args){
MyEventPublisher publisher=new MyEventPublisher();
IEventListener listener1=new MyEvent1Listener1();
publisher.addEventListener("MyEvent1", liste