9.3.1 | Aktivieren von Ereignissen |
Im JDK 1.1 besitzt man die Möglichkeit, einzelne Ereignis-Typen zu aktivieren bzw. zu deaktivieren. Per Voreinstellung sind alle Ereignis-Typen deaktiviert. Will man nun auf einen bestimmten Typ reagieren, so muss man ihn zuvor aktivieren, sonst werden keine Ereignisse dieses Typs erzeugt. Beim Delegationsmodell erfolgt die Aktivierung automatisch beim Registrierungsvorgang eines Listeners. Bei der Implementierung der processXXXEvent-Methode ist das aber nicht der Fall. Für die Aktivierung eines Ereignis-Typs bietet das JDK 1.1 zwei Möglichkeiten:Bei der Entwicklung wiederverwendbarer Komponenten, für die diese Art der Ereignisverarbeitung gedacht ist, kann man nie davon ausgehen, dass sich ein EventListener bei einer Komponente registriert, da man vorher nicht weiss, in welche Programme eine solche Komponente später eingebunden wird. Deshalb ist es bei der Entwicklung solcher Komponenten sinnvoll, innerhalb des Konstruktors enableEvents() aufzurufen.
- Die erste Möglichkeit besteht darin, einen EventListener bei dem Objekt, in dem ein Ereignis-Typ aktiviert werden soll, zu registrieren. Hierbei wird automatisch beim Registrierungsvorgang der Ereignis-Typ aktiviert, für den die Registrierung erfolgt.
- Die zweite Möglichkeit besteht darin, explizit die Methode enableEvents(long) der Klasse Component aufzurufen. enableEvents(long) erhält als Parameter eine Oder-Verknüpfung der Bitmasken von Ereignis-Typen, die aktiviert werden sollen. Diese Bitmasken sind in der Klasse AWTEvent definiert. Die Aktivierung von Event-Typen kann auch wieder rückgängig gemacht werden. Hierfür steht die Methode disableEvents(long) zur Verfügung, der ebenfalls eine Bitmaske zur Darstellung der Event-Typen übergeben wird.
Ein Aufruf von enableEvents(long) könnte z. B. folgendermaßen aussehen:enableEvents(AWTEvent.FOCUS_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.KEY_EVENT_MASK);Nach diesem Aufruf werden Fokus-Events, Maus-Events und Key-Events erzeugt und auch ohne Registrierung eines Listeners an die jeweiligen processXXXEvent-Methoden weitergeleitet.