Literatur

JLayeredPane

Ein JLayeredPane ist ein Container, der über verschiedene Ebenen oder Schichten (engl. layers) verfügt. Man kann sich diese Ebenen wie bei einem Videotext vorstellen. Auf der untersten Ebene befindet sich das Fernsehbild. Durch den Aufruf des Videotextes wird eine neue Ebene über die Ebene des normalen Fernsehbildes "geschoben". Dies wird deutlich, wenn man den Hintergrund des Videotextes ausblendet und so sichtbar wird, dass sich die Fernsehbild-Ebene darunter befindet. Die Klasse JLayeredPane kann beliebig viele Layers besitzen. Einige Ebenen sind "vorbelegt" bzw. für bestimmte Verwendungen reserviert. Diese Layers sind über eigene Konstanten festgelegt:

Konstante Wert Beschreibung
JLayeredPane.FRAME_CONTENT_LAYER -3000 Dieser Ebene werden die JToolBar und der Content Pane, zugeordnet.
JLayeredPane.DEFAULT_LAYER 0 Diese Konstante repräsentiert die Standard-Ebene, auf der hinzugefügte Komponenten abgelegt werden.
JLayeredPane.PALETTE_LAYER 100 Diese Konstante wird sinnvollerweise für Komponenten verwendet, die die anderen überlagern sollen, wie  z.B. positionierbare Werkzeugleisten (JToolBars) und Farbpaletten.
JLayeredPane.MODAL_LAYER 200 In dieser Ebene landen modale Dialoge. JOptionPanes befinden sich in der Regel auf dieser Ebene.
JLayeredPane.POPUP_LAYER  300 Diese Ebene ist für Popup-Fenster gedacht, wie z.B. Hinweismeldungen.
JLayeredPane.DRAG_LAYER 400 In diese Ebene werden Komponenten gelegt, während sie per Drag-and-Drop verschoben werden.

Der Integer-Wert der Konstanten zeigt an, wie weit oben sich die Ebene befindet: Je höher der Wert, umso weiter oben befindet sich die Ebene. Folgendes Bild soll veranschaulichen, wie die Ebenen sich überlagern:

Schematische Darstellung der unterschiedlichen Layer eines JLayeredPane

Die im vorherigen Kapitel vorgestellte Klasse JDesktopPane ist abgeleitet von JLayeredPane. Dadurch ist es möglich, auf einem JDesktopPane mehrere interne Fenster auf verschiedenen Ebenen zu verwalten.

Die Klasse JLayeredPane verfügt nur über den parameterlosen Standardkonstruktor. Nachfolgend möchten wir einige wichtige Methoden vorstellen:

Methode Beschreibung
int getComponentCountInLayer(int layer) Diese Methode liefert die Anzahl an Komponenten innerhalb des übergebenen Layers.
Component[ ] getComponentsInLayer(int layer) Hier wird ein Array mit den Komponenten zurückgegeben, die sich auf der übergebenen Ebene befinden.
int getIndexOf(Component c) Ermittelt den Index der Komponente, ohne dabei die Ebene zu berücksichtigen
int getLayer(Component c) Diese Methode liefert die Ebene, auf der sich die übergebene Komponente befindet, zurück.
static JLayeredPane    getLayeredPaneAbove(Component c) Diese statische Methode liefert den übergeordneten JLayeredPane der übergebenen Komponente zurück.
int getPosition(Component c) Diese Methode gibt die relative Position, an der sich die übergebene Komponente innerhalb ihrer Ebene befindet, zurück.
int highestLayer() Hier wird die höchste (oberste) Ebene ermittelt.
int lowestLayer() Hier wird der niedrigste (unterste) Ebene ermittelt.
void moveToBack(Component c) Mit dieser Methode wird die übergebene Komponente innerhalb ihrer Ebene nach unten gerückt (Position -1).
void moveToFront(Component c) Die Komponente wird innerhalb ihrer Ebene nach vorne gesetzt (Position 0).
void remove(int index)  Mit dieser Methode wird die Komponente mit dem übergebenen Index entfernt.
void removeAll() Alle Komponenten auf dem JLayeredPane werden entfernt.
void setLayer(Component c, int layer) Mit dieser Methode wird eine Komponente einer bestimmten Ebene zugeordnet. Die Komponente wird dort so weit unten wie möglich platziert.
void setLayer(Component c, int layer, int position) Eine Komponente wird einer Ebene zugeordnet. Zusätzlich wird die Position innerhalb der Ebene angegeben.
void setPosition(Component c, int position)  Mit dieser Methode wird eine Komponente an eine bestimmte Position in ihrer Ebene gesetzt, 0 ist dabei die höchste und -1 die unterste Ebene.