首先,创建自己的EventObject。这是我的一个项目的示例。
import gov.bop.rabid.datahandler.bean.InmateDataBean;import java.util.EventObject;public class InmatePhotoEventObject extends EventObject { private static final long serialVersionUID = 1L; protected InmateDataBean inmate; public InmatePhotoEventObject(Object source) { super(source); } public InmateDataBean getInmate() { return inmate; } public void setInmate(InmateDataBean inmate) { this.inmate = inmate; }}
除了扩展EventObject之外,此类没有什么特别的。您的构造函数由EventObject定义,但是您可以创建所需的任何方法。
其次,定义一个EventListener接口。
public interface EventListener { public void handleEvent(InmatePhotoEventObject eo);}
您将使用创建的EventObject。您可以使用任何所需的方法名称。这是将作为对侦听器的响应编写的代码的接口。
第三,编写一个ListenerHandler。这是同一项目中的我的。
import gov.bop.rabid.datahandler.bean.InmateDataBean;import gov.bop.rabid.datahandler.main.EventListener;import gov.bop.rabid.datahandler.main.InmatePhotoEventListener;import gov.bop.rabid.datahandler.main.InmatePhotoEventObject;import java.util.ArrayList;import java.util.List;public class InmatePhotoListenerHandler { protected List<EventListener> listeners; public InmatePhotoListenerHandler() { listeners = new ArrayList<EventListener>(); } public void addListener(EventListener listener) { listeners.add(listener); } public void removeListener(EventListener listener) { for (int i = listeners.size() - 1; i >= 0; i--) { EventListener instance = listeners.get(i); if (instance.equals(listener)) { listeners.remove(i); } } } public void fireEvent(final InmatePhotoEventObject eo, final InmateDataBean inmate) { for (int i = 0; i < listeners.size(); i++) { final EventListener instance = listeners.get(i); Runnable runnable = new Runnable() { public void run() { eo.setInmate(inmate); instance.handleEvent(eo); } }; new Thread(runnable).start(); } } public static void main(String[] args) { System.out.println("This line goes in your DataHandlerMain class " + "constructor."); InmatePhotoListenerHandler handler = new InmatePhotoListenerHandler(); System.out.println("I need you to put the commented method in " + "DataHandlerMain so I can use the handler instance."); // public InmatePhotoListenerHandler getInmatePhotoListenerHandler() { // return handler; // } System.out.println("This line goes in the GUI pre."); handler.addListener(new InmatePhotoEventListener()); System.out.println("Later, when you've received the response from " + "the web service..."); InmateDataBean inmate = new InmateDataBean(); inmate.setIntKey(23); handler.fireEvent(new InmatePhotoEventObject(handler), inmate); }}
此类中的主要方法显示了如何使用ListenerHandler。该类中的其余方法是标准的。您将使用自己的EventObject和EventListener。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)