Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Jetzt lerne ich Java 6

Anonyme Ereignis-Empfänger

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Anstatt reale Klassen mit ActionListenern aufzusetzen, können in manchen Fällen auch anonyme Klassen genügen.
06:55

Transkript

Ich möchte Ihnen in diesem Beispiel noch zeigen, wie Sie Ihren Quellcode bei sehr vielen Ereignissen, die Sie abfangen möchten, etwas übersichtlicher und effektiver gestalten. Stellen Sie sich vor, Sie haben eine Seite mit sehr sehr vielen Knöpfen, zum Beispiel komplexe Menüs, oder einfach viele Schaltflächen. Լetztendlich müssten Sie mit dem Wissen, was Sie bis jetzt haben, entweder für jede einzelne Schaltfläche einen eigenen Listener schreiben, also eine eigene Klasse bilden für diesen Listener und diesen dann entsprechend bei dem Knopf registrieren oder Sie müssen eben ein geschicktes System, wie wir in der vorhergehenden Lektion gelernt haben, einfach eine Klasse verwenden für zum Beispiel alle Schaltflächen, und dann aus dem Event letztendlich herausfinden, zum Beispiel anhand des Labels einer Schaltfläche, welcher Knopf gedrückt wurde, und dann die passende Funktionalität laufen lassen. Ein weiterer Weg, der sehr oft verwenden wird, ist die Arbeit mit so genannten anonymen Klassen. Was das genau ist, möchte ich Ihnen in diesem Beispiel zeigen. Hierfür habe ich wieder ein super simples Beispiel verwendet. Ich zeige Ihnen das gerade mal hier, das hatten wir ganz am Anfang schonmal, einfach hier eine Schaltfläche, ein Label, das war es. Für unsere Anwendungen reicht das völlig und ich denke, Ihnen wird auch damit relativ schnell klar, wie das Ganze funktioniert. Okay. Wenn ich normalerweise auf einem Button einen Listener legen möchte, muss ich vorher eine Listener Klasse generieren. Das können wir entweder aus dem Interface ableiten oder aus einem Adapter. Bei der Methode, die ich Ihnen jetzt zeige, sparen wir uns das zuerst einmal. Wir gehen hier oben einfach in den Konstruktor, dort wo wir halt auch den Button ins Leben gerufen haben, und hängen hier, wo wir normalerweise den Listener registrieren, genau das an. Das heißt, wir gehen einfach hier auf "addActionListener" als ob wir einen hätten, und hängen den an, aber da wir keinen haben, generieren wir jetzt einfach eine sogenannte anonyme Klasse. Das geht so, dass wir einfach hier hineingehen, sagen "new", ziehen aber jetzt keine Instanz von unserer Klasse, die wir nicht haben, sondern wir sagen direkt: wir brauchen eine neue Instanz von ActionListener. Schreiben wir also hier in die Klammer hinein, und da jetzt natürlich ActionListener ja eigentlich nur ein Interface ist, und danach schreit, implementiert zu werden, setzen wir jetzt an dieser Stelle geschweifte Klammern. Und in diese geschweiften Klammern hinein müssen wir jetzt das tun, was wir bei einem Interface tun müssen, und zwar die passende Methode implementieren. Die passene Methode heißt ActionPerform, das wissen wir ja, also "public void actionPerformed". Übergeben wird ein ActionEvent, das wir "e" nennen. Auch hier kommen wieder geschweifte Klammern und Sie sehen, das sitzt jetzt alles ineinander. Und hier führen wir sofort das aus, was eigentlich das Ganze bewirken soll, zum Beispiel label.setText ("Danke!"). Das sieht jetzt zuerst noch einmal ein bisschen sehr verwirrend aus, und es fehlt mit Sicherheit auch noch ein Semikolon, und zwar müssen wir das jetzt einfach mal von außen nach innen durchgehen. addActionListener, hier ist eine runde Klammer, also in der befinden wir uns und hier unten ist die endende runde Klammer. Da setzen wir also jetzt ein passenes Semikolon hin, lassen wir das einfach nochmal neu schreiben und dann geben wir das durch, also runde Klammer auf, runde Klammer zu. Setzen wir die etwas tiefer und am Ende eines Befehls kommt ein Semikolon. Danach kommt "new", damit bilden wir eine neue Instanz der anonymen Klasse, ActionListener ( ). Geschweifte Klammer beginnt, also hier beginnt unser Codeblock für ActionListener. Die können wir einfach mal hier nach unten rücken und hier ein bisschen rein, dann wissen wir, ah, das gehört hier dazu. Dann können wir hier das mal einrücken, aha, das ist die Methode, die bringt auch wieder eine geschweifte Klammer mit sich. Das heißt, dass hier wird so weit eingerückt und hier endet die Methode. Danach ist unsere Klasse fertig. Das heißt, die Klammer geht auch wieder zu und dann eben die runde Klammer für das Ganze. Das heißt, wir haben jetzt alles in eins geschrieben und so sieht ganz dann formatiert aus und können das Ganze dann testen und Sie sehen, es funktioniert. Der Vorteil an dieser Geschichte ist, auch wenn es am Anfang etwas verwirrend erscheint, man hat das nach kurzer Zeit schon raus, wo die Klammern hinkommen, dass Sie nirgends sonst im Programm irgendetwas haben, was auf Listener hinweist. Das heißt hier, mit der Definition des Knopfes hier oben und hier diesen paar Zeilen, sind Sie absolute fertig mit dem ganzen Verknüpfen von Funktionalität. Und das kann Ihrem Programm nachher mehr Übersicht geben als zig innerer Klassen, in denen die Listener dann von Ihnen definiert werden. Sie können sogar, dann noch einen Schritt weitergehen, wenn Sie das gerne möchten, und können jetzt sogar noch sagen: Okay das, was hier drinnen steht, das kann ja auch nicht nur eine Zeile sein, sondern auch mehrere. Das lagern Sie wieder in einer Funktion aus. Und zwar stehen sie ja hier einer eigenen Klasse "Anonym". Und in dieser Klasse, ganz klar, können Sie natürlich genau wie die Main-Methode und ähnliches, einfach weitere Methoden hinzufügen. Wir sagen also hier zum Beispiel "public void", zurückgegeben wird nichts, "tuewas" . Und Sie schreiben Ihre ganze Funktionalität letztendlich jetzt hier hinein. Und das kann dann ruhig ein bisschen länger sein. Und das Einzige, was Sie hier tun müssen, ist die passende Methode "tuewas" aufzurufen. Das heißt, Sie müssen einfach nur diesen Block hier nehmen und entsprechend so die Knöpfe mit Funktionalität versehen.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!