Beans can use the standard event types defined in the java.awt.event and javax.swing.event packages, but they don't have to. Our YesNoPanel class defines its own event type, AnswerEvent. Defining a new event class is really quite simple; AnswerEvent is shown in Example 15-4.
package je3.beans;
/**
* The YesNoPanel class fires an event of this
type when the user clicks one
* of its buttons. The id field specifies which button the user pressed.
**/
public class AnswerEvent extends java.util.EventObject {
public static final int YES = 0, NO = 1, CANCEL = 2;
// Button constants
protected int id; // Which button was pressed?
public AnswerEvent(Object source, int id) {
super(source);
this.id = id;
}
public int getID( ) { return id; } // Return the button
}
Along with the AnswerEvent class, YesNoPanel also defines a new type of event listener interface, AnswerListener, that defines the methods that must be implemented by any object that wants to receive notification from a YesNoPanel. The definition of AnswerListener is shown in Example 15-5.
package je3.beans;
/**
* Classes that want to be notified when the user clicks a button in a
* YesNoPanel should implement this interface.
The method invoked depends
* on which button the user clicked.
**/
public interface AnswerListener extends java.util.EventListener {
public void yes(AnswerEvent e);
public void no(AnswerEvent e);
public void cancel(AnswerEvent e);
}