JLayeredPane adds depth to a JFC/Swing container,
allowing components to overlap each other when needed.
An Integer object specifies each component's depth in the
container, where higher-numbered components sit "on top" of other
components.
For task-oriented documentation and examples of using layered panes see
How to Use a Layered Pane,
a section in The Java Tutorial.
Example:
JLayeredPane divides the depth-range
into several different layers. Putting a component into one of those
layers makes it easy to ensure that components overlap properly,
without having to worry about specifying numbers for specific depths:
JLayeredPane methods moveToFront(Component),
moveToBack(Component) and setPosition can be used
to reposition a component within its layer. The setLayer method
can also be used to change the component's current layer.
JLayeredPane manages its list of children like
Container, but allows for the definition of a several
layers within itself. Children in the same layer are managed exactly
like the normal Container object,
with the added feature that when children components overlap, children
in higher layers display above the children in lower layers.
Each layer is a distinct integer number. The layer attribute can be set
on a Component by passing an Integer
object during the add call.
For example:
layeredPane.add(child, JLayeredPane.DEFAULT_LAYER);
or
layeredPane.add(child, Integer.valueOf(10));
The layer attribute can also be set on a Component by calling
layeredPaneParent.setLayer(child, 10)
on the JLayeredPane that is the parent of component. The layer
should be set before adding the child to the parent.
Higher number layers display above lower number layers. So, using numbers for the layers and letters for individual components, a representative list order would look like this:
5a, 5b, 5c, 2a, 2b, 2c, 1a
where the leftmost components are closest to the top of the display.
A component can be moved to the top or bottom position within its
layer by calling moveToFront or moveToBack.
The position of a component within a layer can also be specified directly. Valid positions range from 0 up to one less than the number of components in that layer. A value of -1 indicates the bottommost position. A value of 0 indicates the topmost position. Unlike layer numbers, higher position values are lower in the display.
Note
This sequence (defined by java.awt.Container) is the reverse
of the layer numbering sequence. Usually though, you will use moveToFront,
moveToBack, and setLayer.
5a, 5b, 5c, 5x, 2a, 2b, 2c, 1a
Calling add(5z, 5, 2) results in:
5a, 5b, 5z, 5c, 5x, 2a, 2b, 2c, 1a
Calling add(3a, 3, 7) results in:
5a, 5b, 5z, 5c, 5x, 3a, 2a, 2b, 2c, 1a
Using normal paint/event mechanics results in 1a appearing at the bottom
and 5a being above all other components.Note
that these layers are simply a logical construct and LayoutManagers will affect all child components of this container without regard for layer settings.
Warning
Swing is not thread safe. For more information see Swing's Threading Policy.
Warning
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeans
has been added to the java.beans package.
Please see java..
| Modifier and Type | Class and Description |
|---|---|
| protected class | JLayeredPane.
This class implements accessibility support for the
|
| Modifier and Type | Field and Description |
|---|---|
| private Hashtable | |
| public static final Integer | DEFAULT_LAYER
Convenience object defining the Default layer. |
| public static final Integer | DRAG_LAYER
Convenience object defining the Drag layer. |
| public static final Integer | FRAME_CONTENT_LAYER
Convenience object defining the Frame Content layer. |
| public static final String | LAYER_PROPERTY
Bound property |
| public static final Integer | MODAL_LAYER
Convenience object defining the Modal layer. |
| private boolean | |
| public static final Integer | PALETTE_LAYER
Convenience object defining the Palette layer. |
| public static final Integer | POPUP_LAYER
Convenience object defining the Popup layer. |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| protected void | addImpl(Component comp, Object constraints, int index)
Overrides java. Adds the specified component to this container at the specified index. |
| public AccessibleContext | Returns: an AccessibleJLayeredPane that serves as the AccessibleContext of this JLayeredPaneOverrides java. Implements javax. Gets the AccessibleContext associated with this JLayeredPane. |
| public int | Returns: an int specifying the number of components in that layeran int specifying the layer to check layer)Returns the number of children currently in the specified layer. |
| public Component[] | Returns: an array of Components contained in that layeran int specifying the layer to check layer)Returns an array of the components in the specified layer. |
| protected Hashtable | Returns: the Hashtable used to map components to their layersReturns the hashtable that maps components to layers. |
| public int | Returns: an int specifying the component's indexthe Component to check c)Returns the index of the specified Component. |
| public static int | Returns: an int specifying the component's layerthe JComponent to check c)Gets the layer property for a JComponent, it does not cause any side effects like setLayer(). |
| public int | |
| public static JLayeredPane | Returns: the JLayeredPane that contains the component, or null if no JLayeredPane is found in the component hierarchythe Component to check c)Convenience method that returns the first JLayeredPane which contains the specified component. |
| protected Integer | Returns: an Integer object for that layeran int specifying the layer layer)Returns the Integer object associated with a specified layer. |
| public int | Returns: an int giving the component's position, where 0 is the topmost position and the highest index value = the count of components at that layer minus 1the Component to check c)Get the relative position of the component within its layer. |
| public int | Returns: an int indicating the layer of the topmost component in the pane, or zero if there are no childrenReturns the highest layer value from all current children. |
| protected int | Returns: an int giving the (absolute) insertion-indexan int specifying the layer layer, int an int specifying the position within the layer position)Primitive method that determines the proper location to insert a new child based on layer and position requests. |
| private int | Returns: an int giving the (absolute) insertion-indexcomponent to ignore when determining index comp, int an int specifying the layer layer, int an int specifying the position within the layer position)This method is an extended version of insertIndexForLayer() to support setLayer which uses Container.setZOrder which does not remove the component from the containment hierarchy though we need to ignore it when calculating the insertion index. |
| public boolean | Returns: false if components can overlap, else trueOverrides javax. Returns false if components in the pane can overlap, which makes optimized drawing impossible. |
| public int | Returns: an int indicating the layer of the bottommost component in the pane, or zero if there are no childrenReturns the lowest layer value from all current children. |
| public void | moveToBack(Component
the Component to move c)Moves the component to the bottom of the components in its current layer (position -1). |
| public void | moveToFront(Component
the Component to move c)Moves the component to the top of the components in its current layer (position 0). |
| public void | paint(Graphics
the Graphics context within which to paint g)Overrides javax. Paints this JLayeredPane within the specified graphics context. |
| protected String | Returns: a string representation of this JLayeredPane.Overrides javax. Returns a string representation of this JLayeredPane. |
| public static void | putLayer(JComponent
the JComponent to move c, int an int specifying the layer to move it to layer)Sets the layer property on a JComponent. |
| public void | remove(int
an int specifying the component to remove index)Overrides java. Remove the indexed component from this pane. |
| public void | |
| public void | |
| public void | setLayer(Component
the Component to set the layer for c, int an int specifying the layer to set, where
lower numbers are closer to the bottom layer, int an int specifying the position within the
layer, where 0 is the topmost position and -1
is the bottommost position position)Sets the layer attribute for the specified component and also sets its position within that layer. |
| public void | setPosition(Component
the Component to move c, int an int in the range -1..N-1, where N is the number of
components in the component's current layer position)Moves the component to |
| private void |
| componentToLayer | back to summary |
|---|---|
| private Hashtable<Component, Integer> componentToLayer | |
| DEFAULT_LAYER | back to summary |
|---|---|
| public static final Integer DEFAULT_LAYER Convenience object defining the Default layer. Equivalent to Integer.valueOf(0). | |
| DRAG_LAYER | back to summary |
|---|---|
| public static final Integer DRAG_LAYER Convenience object defining the Drag layer. Equivalent to Integer.valueOf(400). | |
| FRAME_CONTENT_LAYER | back to summary |
|---|---|
| public static final Integer FRAME_CONTENT_LAYER Convenience object defining the Frame Content layer. This layer is normally only use to position the contentPane and menuBar components of JFrame. Equivalent to Integer.valueOf(-30000).
| |
| LAYER_PROPERTY | back to summary |
|---|---|
| public static final String LAYER_PROPERTY Bound property | |
| MODAL_LAYER | back to summary |
|---|---|
| public static final Integer MODAL_LAYER Convenience object defining the Modal layer. Equivalent to Integer.valueOf(200). | |
| optimizedDrawingPossible | back to summary |
|---|---|
| private boolean optimizedDrawingPossible | |
| PALETTE_LAYER | back to summary |
|---|---|
| public static final Integer PALETTE_LAYER Convenience object defining the Palette layer. Equivalent to Integer.valueOf(100). | |
| POPUP_LAYER | back to summary |
|---|---|
| public static final Integer POPUP_LAYER Convenience object defining the Popup layer. Equivalent to Integer.valueOf(300). | |
| JLayeredPane | back to summary |
|---|---|
| public JLayeredPane() Create a new JLayeredPane | |
| addImpl | back to summary |
|---|---|
| protected void addImpl(Component comp, Object constraints, int index) Overrides java. Doc from java. Adds the specified component to this container at the specified
index. This method also notifies the layout manager to add
the component to this container's layout using the specified
constraints object via the
The constraints are
defined by the particular layout manager being used. For
example, the
The
If the current layout manager implements If the component is not an ancestor of this container and has a non-null parent, it is removed from its current parent before it is added to this container. This is the method to override if a program needs to track every add request to a container as all other add methods defer to this one. An overriding method should usually include a call to the superclass's version of the method:
This method changes layout-related information, and therefore, invalidates the component hierarchy. If the container has already been displayed, the hierarchy must be validated thereafter in order to display the added component. | |
| getAccessibleContext | back to summary |
|---|---|
| public AccessibleContext getAccessibleContext() Overrides java. Implements javax. Gets the AccessibleContext associated with this JLayeredPane. For layered panes, the AccessibleContext takes the form of an AccessibleJLayeredPane. A new AccessibleJLayeredPane instance is created if necessary.
| |
| getComponentCountInLayer | back to summary |
|---|---|
| public int getComponentCountInLayer(int layer) Returns the number of children currently in the specified layer.
| |
| getComponentsInLayer | back to summary |
|---|---|
| public Component[] getComponentsInLayer(int layer) Returns an array of the components in the specified layer.
| |
| getComponentToLayer | back to summary |
|---|---|
| protected Hashtable Returns the hashtable that maps components to layers. | |
| getIndexOf | back to summary |
|---|---|
| public int getIndexOf(Component c) Returns the index of the specified Component. This is the absolute index, ignoring layers. Index numbers, like position numbers, have the topmost component at index zero. Larger numbers are closer to the bottom.
| |
| getLayer | back to summary |
|---|---|
| public static int getLayer(JComponent c) Gets the layer property for a JComponent, it does not cause any side effects like setLayer(). (painting, add/remove, etc) Normally you should use the instance method getLayer().
| |
| getLayer | back to summary |
|---|---|
| public int getLayer(Component c) Returns the layer attribute for the specified Component.
| |
| getLayeredPaneAbove | back to summary |
|---|---|
| public static JLayeredPane getLayeredPaneAbove(Component c) Convenience method that returns the first JLayeredPane which contains the specified component. Note that all JFrames have a JLayeredPane at their root, so any component in a JFrame will have a JLayeredPane parent.
| |
| getObjectForLayer | back to summary |
|---|---|
| protected Integer getObjectForLayer(int layer) Returns the Integer object associated with a specified layer.
| |
| getPosition | back to summary |
|---|---|
| public int getPosition(Component c) Get the relative position of the component within its layer.
| |
| highestLayer | back to summary |
|---|---|
| public int highestLayer() Returns the highest layer value from all current children. Returns 0 if there are no children.
| |
| insertIndexForLayer | back to summary |
|---|---|
| protected int insertIndexForLayer(int layer, int position) Primitive method that determines the proper location to insert a new child based on layer and position requests.
| |
| insertIndexForLayer | back to summary |
|---|---|
| private int insertIndexForLayer(Component comp, int layer, int position) This method is an extended version of insertIndexForLayer() to support setLayer which uses Container.setZOrder which does not remove the component from the containment hierarchy though we need to ignore it when calculating the insertion index.
| |
| isOptimizedDrawingEnabled | back to summary |
|---|---|
| public boolean isOptimizedDrawingEnabled() Overrides javax. Returns false if components in the pane can overlap, which makes optimized drawing impossible. Otherwise, returns true.
| |
| lowestLayer | back to summary |
|---|---|
| public int lowestLayer() Returns the lowest layer value from all current children. Returns 0 if there are no children.
| |
| moveToBack | back to summary |
|---|---|
| public void moveToBack(Component c) Moves the component to the bottom of the components in its current layer (position -1).
| |
| moveToFront | back to summary |
|---|---|
| public void moveToFront(Component c) Moves the component to the top of the components in its current layer (position 0).
| |
| paint | back to summary |
|---|---|
| public void paint(Graphics g) Overrides javax. Paints this JLayeredPane within the specified graphics context.
| |
| paramString | back to summary |
|---|---|
| protected String paramString() Overrides javax. Returns a string representation of this JLayeredPane. This method
is intended to be used only for debugging purposes, and the
content and format of the returned string may vary between
implementations. The returned string may be empty but may not
be
| |
| putLayer | back to summary |
|---|---|
| public static void putLayer(JComponent c, int layer) Sets the layer property on a JComponent. This method does not cause any side effects like setLayer() (painting, add/remove, etc). Normally you should use the instance method setLayer(), in order to get the desired side-effects (like repainting).
| |
| remove | back to summary |
|---|---|
| public void remove(int index) Overrides java. Remove the indexed component from this pane. This is the absolute index, ignoring layers.
| |
| removeAll | back to summary |
|---|---|
| public void removeAll() Overrides java. Removes all the components from this container.
| |
| setLayer | back to summary |
|---|---|
| public void setLayer(Component c, int layer) Sets the layer attribute on the specified component, making it the bottommost component in that layer. Should be called before adding to parent.
| |
| setLayer | back to summary |
|---|---|
| public void setLayer(Component c, int layer, int position) Sets the layer attribute for the specified component and also sets its position within that layer.
| |
| setPosition | back to summary |
|---|---|
| public void setPosition(Component c, int position) Moves the component to Note Position numbering is defined by java.awt.Container, and is the opposite of layer numbering. Lower position numbers are closer to the top (0 is topmost), and higher position numbers are closer to the bottom.
| |
| validateOptimizedDrawing | back to summary |
|---|---|
| private void validateOptimizedDrawing() | |
JLayeredPane class. It provides an implementation of the
Java Accessibility API appropriate to layered pane user-interface
elements.Warning
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeans
has been added to the java.beans package.
Please see java..
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public AccessibleRole | Returns: an instance of AccessibleRole describing the role of the objectOverrides javax. Get the role of this object. |
| AccessibleJLayeredPane | back to summary |
|---|---|
| protected AccessibleJLayeredPane() Constructs an | |
| getAccessibleRole | back to summary |
|---|---|
| public AccessibleRole getAccessibleRole() Overrides javax. Get the role of this object.
| |