15.27 JRootPane und JLayeredPane
Ein JRootPane ist ein Container, der aus einer Glass-Pane und einer Layered-Pane besteht. Die Glass-Pane liegt über allen anderen Komponenten wie eine Glasscheibe.
Beispiel Weise der Glass-Pane einen wartenden Cursor zu.
Component c = getGlassPane();
if( c != null )
c.setCursor( Cursor.getPredefinedCursor( Cursor.WAIT_CURSOR ) );
|
Die Layered-Pane nimmt JComponent-Objekte auf und stellt sie in einer geschichteten Reihenfolge dar. Die Layered-Pane besteht selbst wieder aus zwei Objekten, einer Menüzeile und der Inhaltsfläche Content-Pane. Container vom Typ JLayeredPane platzieren ihre Kinder in Ebenen (engl. layers). Jedem Kind wird eine Ebene zugewiesen, und beim Zeichnen werden die Kinder von unten nach oben gezeichnet. Damit werden die Komponenten, die unter anderen Komponenten liegen, unter Umständen verdeckt.
Wird ein JLayeredPane-Container verwendet, ist die add()-Methode so implementiert, dass die Komponenten auf einer Standardebene eingetragen werden. Dieser Ebene ist ein Wert zugewiesen, JLayeredPane.DEFAULT_LAYER. Um Komponenten auf eine eigene Ebene zu setzen, so dass sie vor oder hinter anderen Komponenten liegen, wird ihnen eine eigene Ebene zugewiesen, mit einem Wert relativ zu DEFAULT_LAYER. Kleinere Werte bedeuten, dass die Komponenten unten liegen, und hohe Werte, dass sie oben liegen. Ein Beispiel:
layeredPane.add( component, new Integer(5000) );
Für einige Ebenen sind Werte als Konstanten definiert. Dazu zählt zum Beispiel JLayeredPane.DEFAULT_LAYER (0), DRAG_LAYER (400), POPUP_LAYER (300).
Neben der Möglichkeit, die Ebenen festzusetzen, lässt sich die Reihenfolge später durch die Methode moveToFront() oder moveToBack() verändern.
|