![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e333. Creating a Custom EventA new custom event must extendsEventObject . Moreover, an event
listener interface must be declared to allow objects to receive the
new custom event. All listeners must extend from EventListener .
This example demonstrates all the steps necessary to create a new custom event. // Declare the event. It must extend EventObject. public class MyEvent extends EventObject { public MyEvent(Object source) { super(source); } } // Declare the listener class. It must extend EventListener. // A class must implement this interface to get MyEvents. public interface MyEventListener extends EventListener { public void myEventOccurred(MyEvent evt); } // Add the event registration and notification code to a class. public class MyClass { // Create the listener list protected javax.swing.event.EventListenerList listenerList = new javax.swing.event.EventListenerList(); // This methods allows classes to register for MyEvents public void addMyEventListener(MyEventListener listener) { listenerList.add(MyEventListener.class, listener); } // This methods allows classes to unregister for MyEvents public void removeMyEventListener(MyEventListener listener) { listenerList.remove(MyEventListener.class, listener); } // This private class is used to fire MyEvents void fireMyEvent(MyEvent evt) { Object[] listeners = listenerList.getListenerList(); // Each listener occupies two elements - the first is the listener class // and the second is the listener instance for (int i=0; i<listeners.length; i+=2) { if (listeners[i]==MyEventListener.class) { ((MyEventListener)listeners[i+1]).myEventOccurred(evt); } } } }Here's an example of how to register for MyEvents. MyClass c = new MyClass(); // Register for MyEvents from c c.addMyEventListener(new MyEventListener() { public void myEventOccurred(MyEvent evt) { // MyEvent was fired } });
e332. Breaking a String into Words e334. Implementing a Simple Event Notifier e335. Listing All Available Locales e336. Setting the Default Locale e337. Associating a Value with an Object
© 2002 Addison-Wesley. |