Java 7 Grundkurs

Ereignisse behandeln

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Damit der Benutzer Ihres Java-Programms auch damit arbeiten kann, müssen seine Aktionen von der grafischen Oberfläche an das Programm weitergeleitet werden. Das Grundkonzept dafür erläutert dieses Video.
04:40

Transkript

Wenn Sie Ihre Java-Anwendung mit einer graphischen Oberfläche versehen möchten, dann genügt es nicht, alles nur hübsch anzuordnen. Das Programm soll ja auch was tun. Das Konzept hierfür heißt "Ereignisbehandlung". Ein typisches Element einer graphischen Oberfläche ist ein Button, der vom Anwender mit der Maus gedrückt werden kann. Einen solchen Button muss man natürlich nicht mehr selbst programmieren. In der Swing-Bibliothek gibt es nämlich bereits die Klasse "J-Button", die uns einen zur Verfügung stellt. Es gibt ein objektorientiertes Entwurfsprinzip, das heißt "Ein Objekt eine Verantwortlichkeit". Der Button kümmert sich also nur um alles Buttonspezifische. Also eine Rechteck anzeigen, in dem der Text darin steht, auf einen Mausklick reagieren, indem er zu versinken scheint. Aber mit allen anderen Dingen, wie eine Datei öffnen, oder etwas in eine Datenbank schreiben, hat er nichts am Hut. Das macht ihn leicht erwartbar und ausgezeichnet wieder verwendbar. Für das, was jetzt passieren soll, wenn der Button gedrückt wird, brauchen wir also ein separates Objekt. Dieses Objekt beobachtet den Button. Es horcht, sozusagen, ob er gedrückt wird, und deshalb nennt man es auch einen "Listener". Dieser Listener hat nun eine Methode, und in dieser Methode steht darin, was passieren soll, wenn der Button gedrückt wird. Das funkitoniert ganz einfach so, dass der Button, wenn er gedrückt wird, diese Methode am Listener aufruft. Damit der Button diese Methode aufrufen kann, muss er natürlich wissen, wie sie heißt. Deshalb ist diese Methode in einem Interface beschrieben, und dieses Interface heißt "Action Listener", und der Button kennt dieses Interface. Denn dieses Interface gehört auch zur Standardbibliothek. Mein Listener muss nun also dieses Interface, diese Schnittstelle anbieten, und damit auch die Methode "Action Performed". Mein Listener könnte prinzipiell noch viele weitere Methoden haben, das wäre aber für den Button total uninteressant. Ihn interessiert nur, dass das hier ein Action-Listener ist, und dass er demzufolge die Methode "Action Performed" hat, die der Button aufrufen kann. Um eine Methode von einem Objekt aufrufen zu können, müssen wir natürlich wissen, wo das Objekt sich befindet. Wir benötigen eine Referenz auf dieses Objekt. Im Augenblick hat der Button aber noch keine Ahnung, wo sich unser Listener-Objekt befindet. Deshalb muss der Listener beim Button angemeldet werden. In der Klasse "J-Button", nach der wir ja diesen Button erzeugt haben, gibt es dafür auch bereits die passende Methode, und die heißt "Add Action Listener". Nun können wir also zum Button gehen, diese Methode aufrufen, und als Parameter eine Referenz auf unseren Listener übergeben. Damit der Button sich auch merken kann, dass sich hier gerade jemand angemeldet hat, hält er intern eine kleine Liste vor. Dies ist eine Liste für Action-Listener, denn es können sich ja auch nur Action-Listener anmelden, und wenn wir jetzt die Methode "Add Action Listener" aufrufen, und unserem Listener übergeben, dann gelangt er in diese interne Liste. Daran, dass es eine Liste ist, und nicht nur ein einzelnes Feld, können wir sehen, dass sich prinzipiell beliebig viele verschiedene Listener beim selben Button anmelden können. Wir bleiben hier aber erstmal nur bei einem Listener. Wenn der Anmeldevorgang erfolgreich war, dann passiert jetzt erst mal gar nichts mehr. Der Button sitzt da, und wartet, dass er gedrückt wird, und der Listener sitzt da, und wartet, dass er vom Button informiert wird, dass der gedrückt wurde. Und nun, eines Tages, passiert es tatsächlich. Der Button wird gedrückt. Jetzt geht der Button zu seiner Liste von Interessenten, und geht diese Liste durch, und ruft von einem nach dem anderen die Methode "Action Performed" auf, um alle Listener davon zu Informieren, dass das große Ereignis angetreten ist. In der Action Performed Methode steht drin, was passieren soll, wenn der Button gedrückt wird. Und genau das wird jetzt ausgeführt. Ist der Button am Ende seiner Liste angekommen, und hat alle Interessenten informiert, dann ist die Behandlung dieses Ereignisses abgeschlossen. Jetzt sitzen wieder alle Objekte da, und warten auf das nächste Ereignis. Nun gibt es in einer Swing-Anwendung nicht nur Buttons, die man drücken kann, sondern es gibt noch viele andere Arten von Ereignissen. Und für jede Ereignisart gibt es in der Java-Bibliothek ein passendes Interface, in dem eine oder auch mehrere Methoden definiert sind, die ein Interessent für diese Art von Ereignis implementieren muss. Es gibt z.B. ein Interface "Mouse Listener", mit dem sich ein Listener für Mausereignisse anmelden kann. In diesem Interface sind gleich fünf Methoden definiert. Der Listener implementiert dieses Interface, er bietet also alle fünf Methoden an, und schreibt in jede Methode rein, was passieren soll, wenn dieses Ereignis auftritt. Dann meldet er sich bei der Komponente für den Mausereignis, der er sich interessiert, an, und wartet auf die Ereignisse. Es könnte z.B. durchaus ein Button sein, bei dem er sich da anmeldet. Nur dass sich der Listener sich in diesem Fall nicht nur dafür interessiert, dass der Button gedrückt wird, sondern auch für all die anderen Mausereignisse. Wir haben hier einmal "Mouse Clicked", das ist: Maustaste drücken und wieder loslassen. "Mouse Entered" bedeutet: Der Mauszeiger betritt den Buttonbereich. "Mouse Exited" ist dann das Gegenteil. Der Mauszeiger verlässt den Button. "Mouse Pressed", D.h.: Die Maustaste wurde gedrückt, und "Mouse Released", D.h.: Die Maustaste wurde wieder losgelassen. Nun haben Sie also gesehen, wie das Prinzip der Ereignisbehandlung funktioniert, mit dem Sie Ihre graphsichen Oberflächen mit Funktionalität versehen können.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 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!