//事件侦听者,实现侦听者接口 public class ClickListener implements IClickListener { public void click(ClicktEvent e) { System.out.println( "the clicked event happened"); }
} // 定义演示控件类,也就是事件源 class DemoBean { // 用一个java.util.Vector对象来存储所有的事件监听器对象。 private Vector clicks = new Vector(); // 添加事件订阅。一般以 add( listener)方式拼写,并添加 synchronized 关键字。 public synchronized void addExampleListener(IClickListener listener) { clicks.add(listener); } // 移除事件订阅。一般以 remove( listener)方式拼写,并添加 synchronized 关键字。 public synchronized void removeExampleListener(IClickListener listener) { clicks.remove(listener); } // 触发事件。 protected void doClickEvent() { // 锁定,避免在触发期间有事件被订阅或移除。 synchronized (this) { // 创建事件状态对象。 ClicktEvent ce = new ClickEvent(this); // 循环触发所有的事件订阅方法。 for (int i = 0; i < clicks.size(); i++) { IClickListener e = (IClickListener)clicks.get(i); e.click(ce); } } } // 模拟点击操作。 public void Click() { doClickEvent(); } }
//测试程序 public class Program { public static void main(String[] args) { // 创建控件。 DemoBean bean = new DemoBean();