Was sind Events?
In den vorausgegangenen Kapiteln haben wir Ihnen die Bedienelemente der Java GUI vorgestellt. Diese blieben in den Beispielen jedoch noch ohne Funktionalität. Der Sinn der Bedienelemente ist es aber, dass der User über diese das Programm steuert. Wenn er beispielsweise einen Button anklickt, erwartet er, dass eine zur Beschriftung passende Aktion (z.B. Speichern einer Datei) ausgeführt wird. Dies wird ermöglicht, indem in Java bei Auftreten eines solchen Ereignisses automatisch ein Objekt der entsprechenden Event-Klasse erzeugt wird. Das Betätigen des Buttons erzeugt beispielsweise ein Objekt der Klasse ActionEvent.
Weitere Ereignisse, die ein Event erzeugen, sind beispielsweise:
- Drücken/Loslassen/Klicken der Maustaste
- Bewegungen mit der Maus
- Verkleinern/Vergrößern/Schließen eines Fensters
- Tastatureingaben
- Wechseln des Fokus
Die Event-Klassen sind alle von der Basisklasse java.util.EventObject bzw. deren Unterklassen abgeleitet. Jedes EventObject enthält eine Referenz auf die Quelle für das Ereignis.
Diese kann über die Methode getSource(), welche die Quelle als Object zurückgibt, abgefragt werden. Die Methode toString() liefert eine String-Repräsentation des Event-Objektes. Das sind also die Minimum-Informationen, die jedes Event-Objekt liefert. In den Unterklassen kommen, je nach Event, weitere Informationen hinzu.
Die Events befinden sich vorwiegend im Paket java.awt.event. Einige möchten wir Ihnen an dieser Stelle kurz vorstellen:
AWT Event-Klassen
Klassenname | Kurzbeschreibung |
ActionEvent | Dieses Event wird bei der Aktionsauslösung bestimmter GUI-Komponenten erzeugt (z.B. Betätigen eines Buttons) |
AdjustmentEvent | Wird bei der Interaktion mit Komponenten erzeugt, die das Interface Adjustable implementieren (z.B. JScrollBar) |
FocusEvent | Dieses Event wird erzeugt, wenn eine Komponente den Fokus bekommt oder verliert. |
ItemEvent | Wird erzeugt, wenn Einträge (Items) von Komponenten, die das Interface ItemSelectable implementieren (z.B. JCheckBox, JComboBox), selektiert oder deselektiert werden. |
MouseEvent | Wird von einer Komponente erzeugt, wenn die Maustaste gedrückt, losgelassen oder geklickt (drücken und loslassen) wird. Außerdem wird ein MouseEvent generiert wenn der Cursor den nicht verdeckten Teil der Komponente betritt oder verlässt. |
TextEvent | Ein TextEvent-Objekt wird erstellt, wenn sich der Text einer Komponente wie z.B. eines Textfeldes ändert. |
WindowEvent | Dieses Event tritt auf, wenn der Zustand eines Fensters sich ändert, also z.B. geöffnet, geschlossen, aktiviert, deaktiviert oder ikonifiziert (auf das Icon reduziert) wird. |
... | ... |
Die obigen Event-Klassen sind von der Klasse java.awt.AWTEvent abgeleitet und verfügen damit zusätzlich zu den oben genannten Methoden, die von EventObject geerbt wurden, über die folgenden Funktionen:
Methoden von AWTEvent
Methodenname | Kurzbeschreibung |
protected void consume () | Das Event wird als "verbraucht" deklariert. |
int getID () | Liefert den Event-Typ in Form eines Integer-Wertes. Dieser kann man mit den Konstanten der jeweiligen Klasse für die einzelnen Event-Typen abgeglichen werden. |
protected boolean isConsumed () | Wenn das Event bereits "verbraucht" wurde, wird true zurückgegeben, andernfalls false. |
String paramString () | Gibt einen String zurück, der das Event-Objekt eindeutig identifiziert. Die Funktion wird im Normalfall nur zum Debugging verwendet. |
void setSource (Object newSource) | Diese Methode ordnet das Ereignis einer anderen Quelle zu. |
Weitere Event-Klassen, die sich auf Swing-Komponenten beziehen und nicht durch die aus der AWT-Bibliothek abgedeckt werden, befinden sich im Paket javax.swing.event. Die meisten sind direkt von java.util.EventObject abgeleitet, einige jedoch basieren ebenfalls auf AWT-Klassen.
Einige Event-Klassen des Swing-Paketes wollen wir hier kurz vorstellen:
Swing-Events
Klassenname | Kurzbeschreibung |
MenuEvent | Tritt bei Interaktionen mit Menu-Objekten auf (z.B. Selektieren, Deselektieren und Öffnen von Menü-Einträgen). |
ListSelectionEvent | Wird bei Änderung des selektierten Bereiches innerhalb einer Liste erzeugt. Das Event-Objekt enthält Informationen über den Index des ersten und den Index des letzten Elementes des selektierten Bereiches. |
TableModelEvent | Dieses Event wird erzeugt, wenn sich die Datenstruktur einer JTable ändert, also z.B. Spalten geändert oder hinzugefügt werden. |
... | ... |
Nun haben Sie erfahren, was ein Event ist. Wie ihr Programm über bestimmte Ereignisse informiert wird und sie eine entsprechende Reaktion implementieren, erfahren Sie in den Unterkapiteln.