Java

Buttons und Action-Events

Du hast schon Erfahrung im Erstellen von Oberflächen gesammelt, aber keinen Schimmer, wie du diese jetzt für den Benutzer interagierbar machst? Das erfährst du jetzt!

Implementierung einer Ereignisbehandlung

Wir beginnen mit dem Fenster aus dem letzten Video, denn das sieht zwar schon ganz gut aus, kann aber noch nichts.

Weder ist das Fenster schließbar, noch lassen sich unsere Schaltflächen anklicken.

Events

Um das zu können, müssen wir erst eine sogenannte Ereignisbehandlung implementieren. Diese sorgt dafür, dass jede Benutzer-Aktion, für die wir das wollen, ein Ereignis auslöst.

In Fachsprache nennt man diese Ereignisse auch Events. Es gibt sie in verschiedenen Formen:

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Ereignisbehandlung und Events

Ein Klick des Benutzers auf eine unserer Schaltflächen ist ein Action Event, ein Klick auf eine Komponente ein Mouse-Event. Tippt unser User auf der Tastatur, ist das ein Key-Event und wenn er die Fensterfunktionen, wie zum Beispiel schließen und Minimieren nutzt, dann ist das ein Window-Event.

Aber was ist eigentlich ein Event?

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Was ist ein Event?

Events sind Java-Objekte, die Infos über Benutzeraktionen verarbeiten. Dazu gibt es in Java auch eine ganz eigene Vererbungshierarchie der Eventklassen.

Ereignisquellen

Damit ein Ereignis ausgelöst werden kann, braucht es aber zunächst eine Quelle. Ereignisquellen sind ebenfalls Java-Objekte, jedoch verwalten diese Listen von sogenannten ActionListenern und sind für Benutzerfunktionen zugänglich. Diese mysteriösen ActionListener sind wiederum nichts anderes, als eine weitere Art von Objekten, die auf ein Ereignis mit dem Ausführen einer Operation reagieren. Dabei gibt es für jede der Ereignisarten eine eigene Schnittstelle.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
ActionListener

Wichtig ist, dass der ActionListener bei der Ereignisquelle angemeldet sein muss, damit das Ganze funktioniert. Das klingt jetzt zwar sehr abstrakt, aber du kannst es dir in etwa vorstellen, wie einen Notruf.

Anrufen von ActionListenern

Es passiert ein Unfall und du rufst die Polizei – aber dafür musst du natürlich deren Nummer kennen. Auch würdest du sie nicht anrufen, läge kein Notfall vor. Gäbe es Verletzte würdest du stattdessen eine Ambulanz rufen und wäre der Notfall ein Brand, würdest du die Feuerwehr wohl eher gebrauchen können.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Um anrufen zu können muss man die Nummer kennen

In diesem Beispiel fungieren die Feuerwehr und die Polizei als verschiedene ActionListener, während die Notfälle die Event Typen repräsentieren. Das Anrufen der Listener ist ähnlich wie das Anmelden.

EventListener

Das Telefonbuch, dass all deine Telefonnummern verwaltet, ist die EventSource, denn sie verwaltet die Liste der EventListener. Außerdem dient sie gleichzeitig als Vermittlung, da sie, sobald eine Benutzerinteraktion erfolgt, ein EventObject erzeugt und für alle relevanten EventListener eine passende Operation aufruft.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
EventListener

Um einen EventListener hinzuzufügen, kannst du den addEventListener()-Befehl verwenden. Er meldet den Listener an.

Schauen wir uns doch mal ein Beispiel zur Einbindung eines Events an:

Einbinden des WindowListeners – Beispiel 

Die einfachste und gleichzeitig wichtigste Einbindung ist die des WindowListeners. Das können wir ganz einfach im Konstruktor unserer Benutzeroberfläche machen.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Einbindung des WindowListeners

Nun müssen wir ihn nur noch in einer separaten Klasse deklarieren, damit unser Programm ihn auch aufrufen kann.

Dafür müssen wir einen Konstruktor angeben und noch eine Eventbehandlungsfunktion, die auf unser Ereignis e reagiert. Sie sorgt später dafür, dass unser Fenster geschlossen werden kann und das Programm beendet wird.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Einbindung des WindowListeners

Da wir das nun erledigt haben, können wir uns unserem Button zuwenden. Dieser soll beim Anklicken durch den Benutzer mit einer Datenbank verbinden. Hier geht es sowieso erst einmal nur um die Ereignisbehandlung an sich.

Damit unser Button anklickbar ist, fügen wir im Konstruktor einen ActionListener hinzu.

Anschließen des ActionListeners

Damit haben wir unseren ActionListener bei unserem Button angemeldet – oder um bei unserem Beispiel zu bleiben: Wir haben unserem Button die Telefonnummer des ActionListeners gegeben.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Einbindung des WindowListeners

Damit wir diesen nun auch anrufen können, müssen wir seinen Anschluss allerdings erstmal einrichten.

Dazu deklarieren wir eine Klasse namens ActionListener1 und lassen sie einen Action Listener implementieren.

ActionListener, EventListener, Action Event, Key Event, Mouse Event
Einbindung des WindowListeners

Dann müssen wir nur noch unsere Ereignisbehandlung einfügen, also ihn ans Telefon gehen lassen.

Dazu deklarieren wir, wie auch beim WindowListener eine actionPerformed Methode, die auf unser Ereignis e reagiert. Was genau diese tut, ist im Moment noch unerheblich, denn je nach gewünschter Funktion des Buttons kann ihr Inhalt variieren. Wenn wir jetzt auf unseren Button klicken, passiert genau das, was wir in die Funktion geschrieben haben.

Alle anderen GUI-Elemente lassen sich auf dieselbe Art verwalten. Du musst lediglich die passende Art von ActionListener einbinden.

Prima, unser GUI tut jetzt, was es soll. Damit kannst du nun offiziell deine eigenen Oberflächen gestalten. Viel Spaß dabei!


Weitere Videos zum Thema Java

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung. Bitte lade anschließend die Seite neu.