Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 27 - Fenster

## 27.1 Die verschiedenen Fensterklassen

- 27.1 Die verschiedenen Fensterklassen

Das Abstract Windowing Toolkit von Java enthält verschiedene Fensterklassen, die über eine gemeinsame Vererbungshierarchie miteinander in Verbindung stehen (siehe Abbildung 27.1). Oberste Fensterklasse ist `Component`, daraus wurde `Container` abgeleitet. `Container` ist die Oberklasse der beiden Klassen `Window` und `Panel`. Während `Window` sich in die Unterklassen `Frame` und `Dialog` verzweigt, wird aus `Panel` die Klasse `Applet` abgeleitet. Unterhalb von `Dialog` gibt es noch den Standard-File-Dialog in der Klasse `FileDialog`.

Abbildung 27.1: Hierarchie der Fensterklassen

`Component` ist eine abstrakte Klasse, deren Aufgabe darin besteht, ein Programmelement zu repräsentieren, das eine Größe und Position hat und das in der Lage ist, eine Vielzahl von Ereignissen zu senden und auf diese zu reagieren. In den folgenden Abschnitten werden wir einige ihrer Eigenschaften vorstellen.

`Container` ist ebenfalls eine abstrakte Klasse. Sie ist dafür zuständig, innerhalb einer Komponente andere Komponenten aufzunehmen. `Container` stellt Methoden zur Verfügung, um Komponenten hinzuzufügen oder sie zu entfernen, und realisiert in Zusammenarbeit mit den `LayoutManager`-Klassen die Positionierung und Anordnung der Komponenten. `Container` und `Component` bilden zusammen ein Composite-Pattern, wie es in Abschnitt 10.3.7 beschrieben wurde. Weitere Informationen zur Klasse `Container` finden sich in Abschnitt 31.1 bei der Beschreibung von Dialogen und Layoutmanagern.

`Panel` ist die einfachste konkrete Klasse mit den Eigenschaften von `Component` und `Container`. Sie wird verwendet, um eine Sammlung von Dialogelementen mit einem vorgegebenen Layout zu definieren und wiederverwendbar zu machen. Nützlich ist die Klasse auch beim Layouten von Dialogen, weil sie es ermöglicht, Teildialoge zu schachteln und mit eigenen Layoutmanagern zu versehen. Wir werden auf die Verwendung der Klasse `Panel` in Kapitel 31 bei der Beschreibung von Benutzerdialogen zurückkommen.

Die für die Entwicklung von Applets wichtige Klasse `Applet` ist eine direkte Unterklasse von `Panel`. Sie erweitert zwar die Funktionalität der Klasse `Panel` um Methoden, die für das Ausführen von Applets von Bedeutung sind, bleibt aber letzlich ein Programmelement, das eine Größe und Position hat, auf Ereignisse reagieren kann und in der Lage ist, weitere Komponenten aufzunehmen. Einerseits ist es bemerkenswert, daß eine Klasse wie `Applet`, die für eine riesige Zahl von Anwendungen von elementarer Bedeutung ist, ganz unten in der Vererbungskette eines stark spezialisierten Zweigs der Klassenhierarchie steht. Andererseits liefert die Klasse `Applet` jedoch mit der vorstehenden Beschreibung eine nahezu perfekte Charakterisierung von Applets. Wir werden in Kapitel 39 auf die Eigenschaften dieser Klasse näher eingehen.

Die Klasse `Window` abstrahiert ein Top-Level-Window ohne Rahmen, Titelleiste und Menü. Sie ist für Anwendungen geeignet, die ihre Rahmenelemente selbst zeichnen oder die volle Kontrolle über das gesamte Fenster benötigen.

Die Klasse `Frame` repräsentiert ein Top-Level-Window mit Rahmen, Titelleiste und optionalem Menü. Einem `Frame` kann ein Icon zugeordnet werden, das angezeigt wird, wenn das Fenster minimiert wird. Es kann eingestellt werden, ob das Fenster vom Anwender in der Größe verändert werden kann. Zusätzlich besteht die Möglichkeit, das Aussehen des Mauszeigers zu verändern.

Die zweite aus `Window` abgeleitete Klasse ist `Dialog`. Sie ist dafür vorgesehen, modale oder nicht-modale Dialoge zu realisieren. Ein modaler Dialog ist ein Fenster, das immer im Vordergrund des Fensters bleibt, von dem es erzeugt wurde, und das alle übrigen Fensteraktivitäten und Ereignisse so lange blockiert, bis es geschlossen wird. Ein nicht-modaler Dialog kann mit anderen Fenstern koexistieren und erlaubt es, im aufrufenden Fenster weiterzuarbeiten.

|  | Aufgrund von Bugs in der Windows-Portierung des AWT gab es bis zur Version 1.0.2 des AWT keine vernünftige Möglichkeit, modale Dialoge zu erzeugen. Dies war ein ziemlich schwerwiegendes Problem, denn modale Dialoge kommen in der Programmentwicklung sehr häufig vor. Sie werden immer dann benötigt, wenn das Programm auf die Eingabe eines Anwenders warten muß, bevor es fortfahren kann. Leider funktionierte gerade dieser Wartemechanismus nicht, und es wurden eine Reihe aufwendiger Workarounds veröffentlicht. Mit der Version 1.1 des JDK war es erstmals auch unter Windows 95 möglich, echte modale Dialoge in Java zu erstellen. Wir werden auf die Details in Kapitel 31 zurückkommen. |  |
Hinweis

Die unterste Klasse in der Hierarchie der Fenster ist `FileDialog`. Sie stellt den Standard-Dateidialog des jeweiligen Betriebssystems zur Verfügung. Dieser kann beim Laden oder Speichern einer Datei zur Eingabe oder Auswahl eines Dateinamens verwendet werden. Gegenüber den Möglichkeiten des Standard-Dateidialogs, wie er vom Windows-API zur Verfügung gestellt wird, sind die Fähigkeiten der Klasse `FileDialog` allerdings etwas eingeschränkt.

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de