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. Die start()-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 vor destroy() 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 Panel und Applet. Platziert Komponenten von links nach rechts und von oben nach unten.
  • BorderLayout: Der Standard-Layout-Manager für Window, Dialog und Frame. 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.)

Verwandte Einträge: