9.2.1 | Ereignisse als Objekte
|
Ab dem JDK 1.1 wird jede
Gruppe von Ereignissen durch eine eigene Klasse repräsentiert.
Dadurch wird die Art eines Ereignisses schon durch das Ereignis-Objekt
selbst identifiziert. Für das Event-Modell des JDK 1.0 existierte eine
einzige Klasse java.awt.Event, die alle auftretenden Ereignisse
repräsentierte. Die Unterscheidung der einzelnen Ereignisse war nur durch
die Abfrage des Feldes Event.id möglich. Außerdem war die Behandlung der
Ereignisse auf die Methode handleEvent(Event) beschränkt.
Jedes Ereignis wurde zunächst an handleEvent(Event) geschickt.
Dort wurde der Typ des Ereignisses abgefragt und nach Bedarf in
verschiedene Hilfsmethoden verzweigt.
Alle Ereignis-Klassen des heutigen Modells sind von der Klasse EventObject aus dem Paket java.util abgeleitet. Einige Leser werden
sich nun sicherlich fragen, warum die Klasse EventObject im Paket java.util
enthalten ist und nicht im Paket java.awt - schließlich treten Ereignisse bei der Benutzung einer
grafischen Oberfläche auf. Bei der Oberflächenprogrammierung
wird der Programmierer sicherlich
sehr häufig mit Ereignissen in Kontakt kommen, da sie dort sehr zahlreich
vertreten sind (Mausbewegung, Tastatureingaben, Buttondruck etc.), aber
im Grunde definiert ein Ereignis-Objekt nur das Auftreten eines Ereignisses, unabhängig von
dessen Ausgangspunkt. Man könnte sich auch semantische Ereignisse definieren, die die erfolgreiche Eingabe einer
Login/Passwort-Kombination signalisieren, wie folgendes Beispiel zeigt:
Die Eingabe erfolgt zunächst in der grafischen Oberfläche,
woraufhin Eingabe-Ereignisse erzeugt werden.
Die Eingabe-Ereignisse sind aber elementarer Natur und können keine Aussage über
die Korrektheit eines Passwortes machen. Sie liefern nur die eingegebenen Zeichen.
Zur Überprüfung der Korrektheit ist ein Vergleich der Eingabe mit dem
tatsächlichen Passwort notwendig. Bei dessen Übereinstimmung könnte man
ein Ereignis erzeugen und ein anderes Objekt über diese Eingabe informieren.
Ereignisse können somit also auch höherwertige Informationen enthalten und
eine Semantik besitzen. Im J2SDK ist nur ein semantisches Ereignis
vordefiniert. Dieses Ereignis wird von der Klasse ActionEvent repräsentiert und beim Auftreten einer Aktion ausgelöst.
Unter Aktion ist hierbei die Auswahl aus einer Komponente gemeint, wie z. B. das
Drücken eines Buttons oder der Doppelklick auf ein Element einer List.
Für die Definition anderer semantischer Ereignisse muss der
Programmierer selbst eine Klasse von
EventObject ableiten.
Eine Implementierung des Beispiels zur Passworteingabe
ist in Abschnitt 9.4 zu finden.
Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.