Literatur

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.


Unterthemen: