Grundlagen von Java Applets, AWT und Ereignisbehandlung
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 9,83 KB
Java Applets und die Applet-Klasse
Die Applet-Klasse bietet alles, was zur Erstellung von Applets erforderlich ist. Sie ist im Paket java.applet enthalten. Wenn wir ein Applet entwickeln wollen, müssen wir dieses Paket sowie die Pakete java.awt und javax.swing importieren, da diese alle notwendigen Werkzeuge zur Entwicklung von Benutzeroberflächen enthalten. Ein Applet ist ein Programm, das über einen Internet-Browser oder das SDK-Tool appletviewer.exe ausgeführt wird.
Der Lebenszyklus eines Applets
Ein Applet erbt seine Eigenschaften und Methoden von der Klasse Applet im Paket java.applet. Diese Klasse verfügt über mehrere Methoden, die der Benutzer überschreiben kann, um die erforderliche Funktionalität bereitzustellen. Diese Methoden folgen einem bestimmten Lebenszyklus:
- init(): Die erste Methode, die beim Laden des Applets ausgeführt wird, und zwar nur einmal. Sie sollte zur Initialisierung von Variablen verwendet werden.
- start(): Wird nach
init()aufgerufen. Ermöglicht den Neustart eines Applets, nachdem es gestoppt wurde. Diestart()-Methode wird jedes Mal ausgeführt, wenn der Bildschirm das HTML-Dokument mit dem Applet anzeigt. - paint(): Wird jedes Mal ausgeführt, wenn die Ausgabe eines Applets neu gezeichnet werden muss (Repaint).
- stop(): Wird ausgeführt, wenn der Browser die HTML-Seite mit dem Applet verlässt. Dient zum Anhalten des Applets; zum Neustart wird die
start()-Methode aufgerufen. - destroy(): Wird ausgeführt, wenn die Umgebung feststellt, dass das Applet vollständig aus dem Speicher gelöscht werden muss. Die
stop()-Methode wird immer vordestroy()ausgeführt.
Parameterübergabe an Applets via HTML
In einem Applet können Parameter von der HTML-Seite über das <APPLET>-Tag abgerufen werden, indem die Methode getParameter("Argument") aufgerufen wird. Diese Methode liefert den Wert des Arguments als Objekt der Klasse String. Die Parameter werden innerhalb des <APPLET>-Tags mit dem <PARAM>-Tag übergeben, z. B.: <PARAM NAME="argumento" VALUE="elvalor">.
AWT, Applets und Java-Anwendungen
Die AWT (Abstract Window Toolkit) bietet grundlegende Komponenten für eine GUI (Graphical User Interface) und wird sowohl in Java-Anwendungen als auch in Applets verwendet. Einer der Vorteile der Verwendung von AWT ist die Plattformunabhängigkeit der grafischen Schnittstelle. Dadurch wird sichergestellt, dass die Darstellung auf verschiedenen Computern gleich ist. Die AWT-Architektur gliedert sich in Komponenten, Container, Layouts (Design-Manager) und Ereignisse (Events).
Komponenten (Components)
Komponenten sind Klassen oder Schnittstellen, mit denen grafische Objekte erstellt werden, die eine GUI bilden, wie zum Beispiel: Buttons, Dropdown-Listen, Textfelder, Checkboxen, Radio-Buttons, Beschriftungen (Labels), Menüs usw. Die folgende Liste stellt die wichtigsten Komponenten dar:
- Button
- Ein Knopf, der Aktionen durch Mausklick auslöst.
- Canvas
- Zeichenfläche oder Zeichenpanel.
- Checkbox
- Dient zur Auswahl eines Elements.
- CheckboxMenuItem
- Eine Verifikationsoption innerhalb eines Menüs.
- Choice
- Statische Dropdown-Liste.
- Container
- Basisklasse für alle Container.
- Dialog
- Ein Dialogfenster der obersten Ebene.
- Frame
- Rahmen und Basisklasse für alle GUI-Fenster.
- Label
- Etikett oder Textkette.
- List
- Dynamische Liste von Elementen.
- MenuItem
- Ein Menüpunkt.
- Panel
- Grundlegende Wrapper-Klasse zur Erstellung von Designs.
- Scrollbar
- Ermöglicht eine Auswahl in einem Wertebereich.
- ScrollPane
- Implementiert einen horizontalen und vertikalen Schieberegler für eine einzelne Komponente.
- TextArea
- Ermöglicht die Eingabe eines mehrzeiligen Textes in einem rechteckigen Bereich.
Layouts (Design-Manager)
Layouts sind Klassen oder Schnittstellen, die das Design, die Verteilung und die Platzierung von Komponentenobjekten innerhalb von Container-Objekten verwalten. Die Verteilung der Komponenten in einem Container wird in der Regel durch einen Layout-Manager gesteuert. Jeder Container (wie ein Panel oder Frame) hat einen zugehörigen Standard-Layout-Manager, der durch den Aufruf der Methode setLayout() geändert werden kann.
Die folgenden Layout-Manager sind in der Programmiersprache Java enthalten:
- FlowLayout: Der Standard-Layout-Manager für
PanelundApplet. Platziert Komponenten von links nach rechts und von oben nach unten. - BorderLayout: Der Standard-Layout-Manager für
Window,DialogundFrame. Platziert Komponenten in 5 Regionen: Nord, Süd, Ost, West und Mitte (Center). - GridLayout: Ein Layout-Manager, der Komponenten flexibel in Zellen wie in einer Tabelle platziert.
- CardLayout: Wird selten verwendet. Platziert Komponenten in Schichten, wobei jede Schicht wie eine Karte in einem Stapel fungiert.
- GridBagLayout: Wird verwendet, um Komponenten in Zellen unterschiedlicher Größe zu verteilen. Vergleichbar mit
GridLayout, aber flexibler.
Ereignisse (Events)
Ereignisse sind Klassen oder Schnittstellen, die zur Erfassung und Verwaltung von Aktionen dienen. Ein Ereignis ist eine Aktion, die auf einer Komponente ausgeführt wird, z. B. das Klicken auf eine Schaltfläche, das Drücken einer Taste, das Verschieben eines Elements oder geplante zeitliche Ereignisse. Ohne Ereignisse wären grafische Benutzeroberflächen leblos und nicht sehr nützlich.
Ereignisquellen (Event Sources)
Eine Quelle für ein Ereignis ist ein Ereignis-Generator. Beispielsweise erzeugt der Mausklick auf eine Schaltfläche ein ActionEvent. Die Schaltfläche ist dabei die Quelle des Ereignisses. Die Instanz ActionEvent ist ein Objekt, das spezifische Informationen über das Ereignis enthält, darunter:
- getActionCommand(): Gibt den Namen des mit der Aktion verbundenen Befehls zurück.
- getModifiers(): Gibt alle Modifikatoren (z. B. Shift, Ctrl), die während der Aktion aktiv waren, zurück.
Das Ereignis-Delegationsmodell
Das Ereignis-Delegationsmodell wurde mit JDK 1.1 eingeführt. Bei diesem Modell werden Ereignisse an die Komponente gesendet, in der das Ereignis ursprünglich aufgetreten ist. Jede Komponente leitet das Ereignis jedoch an eine oder mehrere Klassen weiter, die als Listener (Zuhörer) fungieren. Die Listener enthalten Event-Handler, die das Ereignis empfangen und verarbeiten. Auf diese Weise ist der Event-Handler ein eigenständiges Objekt der Komponente.
EventListener und Listener-Schnittstellen
Listener sind Klassen, die die Schnittstelle EventListener implementieren. Ereignisse sind Objekte, die nur an registrierte Listener berichten. Jedes Ereignis hat eine entsprechende Listener-Schnittstelle, die festlegt, welche Methoden in der Klasse definiert werden müssen, um diese Art von Ereignissen zu empfangen. Die Klasse, die die Schnittstelle implementiert, definiert alle diese Methoden und kann als Listener registriert werden.
Implementierung mehrerer Listener
Das AWT-Paket ermöglicht es, dass mehrere Listener von derselben Komponente aufgerufen werden. Es ist möglich, Programmcode zu schreiben, um mehrere Ereignisse in einer einzigen Methode zu behandeln. Manchmal erfordert das Design einer Anwendung jedoch, dass viele unabhängige Teile im selben Programm auf dasselbe Ereignis reagieren (z. B. wenn eine kontextsensitive Hilfe in ein bestehendes Programm integriert wird). Der Listener-Mechanismus erlaubt es, die Methode addXxxListener() so oft wie nötig hinzuzufügen, wodurch viele verschiedene Listener registriert werden können, deren Handler aufgerufen werden, wenn ein Ereignis eintritt.
Event-Adapter
Die Implementierung aller Methoden in den einzelnen Listener-Schnittstellen kann mühsam sein, insbesondere bei Schnittstellen wie MouseListener und WindowListener, die mehrere Methoden enthalten. Java bietet daher Adapter-Klassen an, die jede Schnittstelle mit mehr als einer Methode implementieren. Die Methoden in diesen Adapter-Klassen sind leer. Klassen, die Sie definieren, können die Listener-Adapter-Klasse erweitern und nur die Methoden überschreiben, die tatsächlich benötigt werden.
Verwendung von Applets mit AWT
Wie bereits erwähnt, liefert die AWT die Bausteine für eine GUI und wird in Java-Anwendungen und Applets verwendet. Insbesondere in Applets können fast alle AWT-Klassen wie Frame, Dialog, Window, Container usw. verwendet werden, mit Ausnahme der Klasse Menu. (Der folgende Abschnitt, der ein Beispiel verspricht, ist hier nicht enthalten.)