Creating a Custom Event

A new custom event must extends EventObject. 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 } });

Comments

21 Jan 2010 - 3:42pm by Anonymous (not verified)

Thanks.

28 Jun 2010 - 6:56pm by pascal (not verified)

Also the iteration can be written simpler:

foreach(MyEventListener listener : listenerList.getListenerList(MyEventListener.class)
listener.myEventOccurred(evt);

20 Aug 2010 - 2:45am by Stefano Gallina (not verified)

Hi,

it's a nice solution; but in which way can I fire the event ?
Cheers.

Stefano

3 Sep 2010 - 2:46am by Safety Vest (not verified)

You May Leave out These When Browse reflective safety vest Subtlest Mother's Day Accompaniments: Safety workwear

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.