Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Jetzt lerne ich Java 6

Arbeit mit Adapter-Klassen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Da bei der Implementierung von Interfaces alle vorgesehenen Methoden überschrieben werden müssen, kann das ein mühsames Unterfangen werden. Daher ist es meist angenehmer, sich eine passende Adapter-Klasse abzuleiten.
08:47

Transkript

In dieser Lektion lernen Sie die so genannten Adapterklassen kennen. Für was brauchen wir Adapterklassen? Vom Prinzip her haben Sie schon gelernt, wie Sie mit Listener korrekt Ereignisse abfangen können. Daher, wenn Sie jetzt zum Beispiel das Schließen des Fensters, denn das ist ja noch so der Knackpunkt unserer kleinen Applikation, dass wir das Fenster immer noch nicht geschlossen bekommen hier oben, sondern hier unten wirklich abbrechen müssen. Wenn Sie also das Fenster dann schließen wollen, brauchen Sie eigentlich nichts anderes zu tun, als den passenden Listener zu suchen und diesen zu implementieren. Schauen wir uns das Ganze hier einfach in der Doku mal an, was für ein Listener würde da passen? Der ActionListener wohl weniger. Wenn wir jetzt ein bisschen hier durchschauen, werden wir auch einen so genannten WindowListener finden. Und hier steht, es geht um Fenster-Ereignisse und wenn wir uns das Ganze jetzt hier anschauen - spannend ist jetzt das Lesen hier - dann sehen Sie: Hey, da sind auch die Methoden, die sich für ein Fenster ganz sinvoll anhören, zum Beispiel wenn ein Fenster aktiviert wird, wenn ein Fenster geschlossen wurde, wenn ein Fenster geschlossen werden soll, oder gerade dabei ist. Aha, das wäre für uns das passende Ereignis. Ein Fenster soll geschlossen werden und so weiter und so fort. Also, was müssen Sie tun? Ich könnte Sie jetzt alleine da wurschteln lassen. Sie müssen vom Prinzip her einfach nur dieses Interface hier benutzen und wieder einen Listener schreiben. Sie werden mir nach kurzer Zeit böse werden, warum? Sie erinnern sich vielleicht noch an das Grundlagen-Kapitel über die Interfaces. Wenn Sie ein Interface implementieren, müssen Sie alle Methoden, die der Programmierer vorgesehen hat, auch implementieren. Das heißt, Sie würden sich jetzt fröhlich da ran machen und sieben Methoden implementieren müssen. Wie viele wollen Sie denn? Ja, eigentlich nur hier WindowClosing. Das heißt, Sie haben sehr viel Arbeit mit diesem Interface. Und an der Stelle kommen Ihnen die Java-Entwickler entgegen, denn Sie haben einfach gesehen, okay, Interface ist gut, aber das gibt wirklich massig unnötige Arbeit, wir brauchen doch nur eine einzige Methode und dafür haben Sie in den Klassen geschrieben, die sogennante Adapterklassen, die es passend zu den meisten Listener gibt. In dieser Klasse drin sind alle Methoden des passenden Listeners schon vorimplementiert, wenn auch leer. Das heißt, Sie können einfach anstatt direkt in das Interface zu gehen von einer passenden Klasse ableiten, von einer passenden Adapterklasse, die heißen auch genau so, wie die Listener. Und Sie brauchen dann nur wirklich die Methode zu überschreiben, die Sie benötigen. Und damit haben Sie natürlich eine immense Zeitersparnis. Wenn Sie jetzt hier mal hochscrollen, sehen Sie auch direkt hier, wir sind ja im Interface WindowListener, und wenn man das hier jetzt hier, in folgenden Klassen wurde das Ganze implementiert, sich anschaut, sehen Sie hier hinten den passenden WindowAdapter. Das heißt hier sehen Sie direkt: das ist der passende Adapter dazu. Und zu den meisten Listener, wie gesagt, gibt es auch den passenden Adapter. Das heißt, wir werden jetzt hier unten einfach hingehen und auch wieder als innere Klasse jetzt einfach von einem Adapter ableiten, damit wir endlich den Schließen-Dialog bekommen. Wir benennen also unsere Klasse jetzt irgendwie, zum Beispiel "Schliesse Fenster-Listener." Und wie gesagt, wir implementieren jetzt nicht das Interface WindowListener, sondern wir leiten von der Klasse WindowAdapter ab. Sie sehen, das Ganze ist extremst unkompliziert, weil wenn wir wollten, könnten wir das Ganze sogar leer lassen. Okay, das ist aber jetzt natürlich nicht Sinn der Sache, sondern wir implementieren jetzt natürlich das, was für uns wichtig ist. Und das ist die Methode WindowClosing. Woher wissen wir das? Natürlich aus der Dokumentation. Entweder können wir hier ins Interface schauen, dann sehen wir hier WindowClosing, oder wir gehen einfach in die Doku zum WindowAdapter. Und entsprechend bekommen Sie hier auch die passende Methode präsentiert. Denken Sie daran, da kommt ein WindowEvent diesmal an, kein ActionEvent. Okay. Also: Es gibt ein "public", geht nicht zurück, "void", "windowClosing", und jetzt dran denken, es kommt ein "WindowEvent" an, nennen wir faulheitshalber wieder "e", geschweifte Klammern und jetzt können wir schreiben, was wir gerne machen wollen. Was wollen wir machen, wenn jemand oben auf das rote Kreuz beim Fenster klickt? Natürlich die Applikation beenden. Dafür können wir "System" benutzen. Da gibt es eine Methode, die heißt "exit" und wenn wir "exit (0)" aufrufen, dann wird unsere Java-Applikation auch schön geschlossen. So weit so gut, das ist also das Gleiche, wie wir vorhin einen ActionListener mit dem Namen „meinListener“ implementiert haben, hier eben noch aus dem Interface, hier haben wir uns eine Adapterklasse genommen und jetzt müssen wir wieder tun, was wir auch vorhin getan haben, das Ohr an das passende Objekt, es exakt an die passende Komponente legen. Wer ist denn diesmal die passende Komponente für das Schließen vom Fenster? Natürlich das Fenster. Woher kommt das Fenster? Es ist ein Frame, und zwar AWT-Event an sich selbst bildet ja diesen Container. Und in Anbetracht dessen müssen wir dieses Mal darauf binden. Wie kommen wir da dran? Über "this", wir gehen also in den Konstruktor, sagen "this" und natürlich hat ein Container wie ein Frame natürlich auch die passenden Methoden. Hier sehen wir schon "addComponentListener", "ContainerListener" und so weiter, "FocusListener" und so weiter und so fort, was wir brauchen ist natürlich ein "WindowListener". Und das geht etwas schneller, wenn wir hier einfach ".addw" "WindowListener" uns hier auswählen. Und jetzt gleiches Ding wie vorhin: Instanz bilden, "new", ich muss gerade mal schauen, wie ich unsere Klasse gennant habe, kopieren wir das einfach und setzen das hier oben ein, Klammern dahinter, Semikolon ans Ende, speichern und es scheint korrekt zu sein. Also nochmal zur Wiederholung: Hier unten eine innere Klasse bilden, genau wie wir vorhin einen Listener gebildet haben, diesmal aber abgeleitet von einem Adapter. Diesmal haben wir einen WindowAdapter genommen, wie gesagt, Sie müssen immer den passenden Listener oder den passenden Adapter suchen zu dem Ereignis, was Sie abfangen wollen. Da es um das Fenster geht logischerweise ist es bei uns ein Fenster-Adapter, und dann die passende Methode. Hier bei adaptern muss man sie überschreiben, hier oben wäre es, wie gesagt, zu implementieren. Und dann hängen wir das Ganze wieder an, an das passende Element, dass das Ereignis auslöst, in unserem Fall der Frame an sich, also das Fenster, daher "this". Das ist die Referenz auf den Container. Schauen wir uns das Ganze jetzt auch entsprechend an. Hier haben wir also jetzt unser Fenster laufen und wenn ich jetzt hier oben auf "Schließen" drücke, verschwinden wirklich alle Instanzen davon. Voila.

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!