/*---------------------------------------------------------------------------- * Klasse: MyButton.java * Beschreibung: Eigene Button Klasse um Events besser zu behandeln * Autor: Jack Meyer * Datum: Dezember, 1997 * ---------------------------------------------------------------------------- */ import java.awt.*; import java.util.*; public class MyButton extends Button { /* * zum Speichern aller an Events interessierten Komponenten = Listeners */ private Vector listeners = new Vector(); /* * Dummy Konstruktor (zum Ableiten gut) */ public MyButton() { this("press here"); } /* * 'normaler' Konstruktor mit Button Text */ public MyButton(String label) { super(label); } /* * Methode um Listener (Dependents) anzumelden */ public synchronized void addButtonPushListener(MyButtonPushListener bl) { listeners.addElement(bl); } /* * Methode um Listener wieder abzumelden */ public synchronized void removeButtonPushListener(MyButtonPushListener bl) { listeners.removeElement(bl); } /* * Eigentliche Event Methode, JAVA Ebents werden hier abgefangen und * als eigene MyButtonPushEvent an alle Listener weiter verschickt */ public boolean handleEvent(Event evt) { // test ob Button Gepressed if (evt.id == Event.ACTION_EVENT) { // generiere mein eigener Event MyButtonPushEvent myEvent = new MyButtonPushEvent(this); // mach Suicherheitshalber Kopie aller Listeners Vector l; synchronized(this) { l = (Vector) listeners.clone(); }; // informiere alle interessierten Listeners for (int i = 0; i < l.size(); i++) { MyButtonPushListener bl = (MyButtonPushListener) l.elementAt(i); bl.myButtonPushed(this); } } return super.handleEvent(evt); } };