9 | Ereignisbehandlung |
Zur Erstellung grafischer Oberflächen ist es notwendig, die Interna der Kommunikation zwischen den einzelnen Komponenten zu kennen. Diese Kommunikation wird in Java durch das so genannte Event-Handling realisiert.
Immer, wenn ein Benutzer eines Java-Applets oder einer Java-Applikation eine Eingabe mittels Tastatur oder Maus vornimmt, wird ein Objekt erzeugt, das alle Informationen über das aufgetretene Ereignis enthält.
Für das Event-Handling unterstützte die erste Version des JDK, die Version 1.0, lediglich ein hierarchisches Konzept, bei dem ein ausgelöstes Ereignis durch die Hierarchie der Komponenten läuft, bis eine Komponente das Ereignis verarbeitet.
Dieses Vorgehen hat folgende Nachteile:Ab dem JDK 1.1 wurde deshalb ein anderen Weg beschritten. Einen nicht unwesentlichen Einfluss auf die Einführung des neuen Event-Modells hatte die Entwicklung der Komponenten-Architektur Java Beans. Die Verknüpfung von Komponenten zu einer Anwendung ist mit dem Event-Modell des JDK 1.0 nicht ohne weiteres möglich. Deshalb war zu diesem Zweck die Einführung eines neuen Modells notwendig, das es ermöglicht, Objekte unabhängig von ihrer Position in der Komponentenhierarchie miteinander über Ereignisse kommunizieren zu lassen.
- Die Komponentenhierarchie bestimmt gleichzeitig den Ereignisfluss, indem Ereignisse nur jeweils an die in der Hierarchie höherliegenden Komponenten weitergegeben werden konnten.
- Ereignisse, die häufig ausgelöst und in keiner Komponente verarbeitet werden, wirken sich negativ auf die Performance aus. Das Extrembeispiel stellt das »Mouse-Move-Event« (Bewegen des Mauszeigers) dar. Alle »Mouse-Move-Events« werden zunächst an die Komponente geleitet, in der sie erzeugt werden. Anschließend werden sie in der Hierarchie weiter nach oben gereicht, bis sie entweder verarbeitet oder schließlich bei der Wurzel der Komponentenhierarchie verworfen werden.