java.lang.Object | ||||
↳ | java.awt.Component | |||
↳ | java.awt.Container | |||
↳ | javax.swing.JComponent | |||
↳ | javax.swing.JLayeredPane |
![]() |
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.
|
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, new Integer(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, 1awhere 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 useHere are some examples using the method add(Component, layer, position): Calling add(5x, 5, -1) results in:moveToFront
,moveToBack
, andsetLayer
.
5a, 5b, 5c, 5x, 2a, 2b, 2c, 1aCalling add(5z, 5, 2) results in:
5a, 5b, 5z, 5c, 5x, 2a, 2b, 2c, 1aCalling add(3a, 3, 7) results in:
5a, 5b, 5z, 5c, 5x, 3a, 2a, 2b, 2c, 1aUsing 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 JavaBeansTM
has been added to the java.beans
package.
Please see XMLEncoder
.
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
JLayeredPane.AccessibleJLayeredPane | This class implements accessibility support for the
JLayeredPane class. |
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | LAYER_PROPERTY | Bound property |
[Expand]
Inherited Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() |
Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
DEFAULT_LAYER | Convenience object defining the Default layer. | ||||||||||
DRAG_LAYER | Convenience object defining the Drag layer. | ||||||||||
FRAME_CONTENT_LAYER | Convenience object defining the Frame Content layer. | ||||||||||
MODAL_LAYER | Convenience object defining the Modal layer. | ||||||||||
PALETTE_LAYER | Convenience object defining the Palette layer. | ||||||||||
POPUP_LAYER | Convenience object defining the Popup layer. |
[Expand]
Inherited Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Create a new JLayeredPane
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Gets the AccessibleContext associated with this JLayeredPane.
| |||||||||||
Returns the number of children currently in the specified layer.
| |||||||||||
Returns an array of the components in the specified layer.
| |||||||||||
Returns the index of the specified Component.
| |||||||||||
Returns the layer attribute for the specified Component.
| |||||||||||
Gets the layer property for a JComponent, it
does not cause any side effects like setLayer().
| |||||||||||
Convenience method that returns the first JLayeredPane which
contains the specified component.
| |||||||||||
Get the relative position of the component within its layer.
| |||||||||||
Returns the highest layer value from all current children.
| |||||||||||
Returns false if components in the pane can overlap, which makes
optimized drawing impossible.
| |||||||||||
Returns the lowest layer value from all current children.
| |||||||||||
Moves the component to the bottom of the components in its current layer
(position -1).
| |||||||||||
Moves the component to the top of the components in its current layer
(position 0).
| |||||||||||
Paints this JLayeredPane within the specified graphics context.
| |||||||||||
Sets the layer property on a JComponent.
| |||||||||||
Remove the indexed component from this pane.
| |||||||||||
Removes all the components from this container.
| |||||||||||
Sets the layer attribute for the specified component and
also sets its position within that layer.
| |||||||||||
Sets the layer attribute on the specified component,
making it the bottommost component in that layer.
| |||||||||||
Moves the component to
position within its current layer,
where 0 is the topmost position within the layer and -1 is the bottommost
position. |
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Adds the specified component to this container at the specified
index.
| |||||||||||
Returns the hashtable that maps components to layers.
| |||||||||||
Returns the Integer object associated with a specified layer.
| |||||||||||
Primitive method that determines the proper location to
insert a new child based on layer and position requests.
| |||||||||||
Returns a string representation of this JLayeredPane.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() | |||||||||||
![]() |
Convenience object defining the Default layer. Equivalent to new Integer(0).
Convenience object defining the Drag layer. Equivalent to new Integer(400).
Convenience object defining the Frame Content layer. This layer is normally only use to positon the contentPane and menuBar components of JFrame. Equivalent to new Integer(-30000).
Convenience object defining the Modal layer. Equivalent to new Integer(200).
Convenience object defining the Palette layer. Equivalent to new Integer(100).
Convenience object defining the Popup layer. Equivalent to new Integer(300).
Create a new JLayeredPane
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.
Returns the number of children currently in the specified layer.
layer | an int specifying the layer to check |
---|
Returns an array of the components in the specified layer.
layer | an int specifying the layer to check |
---|
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.
c | the Component to check |
---|
Returns the layer attribute for the specified Component.
c | the Component to check |
---|
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().
c | the JComponent to check |
---|
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.
c | the Component to check |
---|
Get the relative position of the component within its layer.
c | the Component to check |
---|
Returns the highest layer value from all current children. Returns 0 if there are no children.
Returns false if components in the pane can overlap, which makes optimized drawing impossible. Otherwise, returns true.
Returns the lowest layer value from all current children. Returns 0 if there are no children.
Moves the component to the bottom of the components in its current layer (position -1).
c | the Component to move |
---|
Moves the component to the top of the components in its current layer (position 0).
c | the Component to move |
---|
Paints this JLayeredPane within the specified graphics context.
g | the Graphics context within which to paint |
---|
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).
c | the JComponent to move |
---|---|
layer | an int specifying the layer to move it to |
Remove the indexed component from this pane. This is the absolute index, ignoring layers.
index | an int specifying the component to remove |
---|
Removes all the components from this container.
Sets the layer attribute for the specified component and also sets its position within that layer.
c | the Component to set the layer for |
---|---|
layer | an int specifying the layer to set, where lower numbers are closer to the bottom |
position | an int specifying the position within the layer, where 0 is the topmost position and -1 is the bottommost position |
Sets the layer attribute on the specified component, making it the bottommost component in that layer. Should be called before adding to parent.
c | the Component to set the layer for |
---|---|
layer | an int specifying the layer to set, where lower numbers are closer to the bottom |
Moves the component to position
within its current layer,
where 0 is the topmost position within the layer and -1 is the bottommost
position.
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.
c | the Component to move |
---|---|
position | an int in the range -1..N-1, where N is the number of components in the component's current layer |
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 addLayoutComponent
method.
The constraints are
defined by the particular layout manager being used. For
example, the BorderLayout
class defines five
constraints: BorderLayout.NORTH
,
BorderLayout.SOUTH
, BorderLayout.EAST
,
BorderLayout.WEST
, and BorderLayout.CENTER
.
The GridBagLayout
class requires a
GridBagConstraints
object. Failure to pass
the correct type of constraints object results in an
IllegalArgumentException
.
If the current layout manager implements LayoutManager2
, then
addLayoutComponent(Component, Object)
is invoked on
it. If the current layout manager does not implement
LayoutManager2
, and constraints is a String
, then
addLayoutComponent(String, Component)
is invoked on it.
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:
super.addImpl(comp, constraints, index)
comp | the component to be added |
---|---|
constraints | an object expressing layout constraints for this component |
index | the position in the container's list at which to
insert the component, where -1
means append to the end |
Returns the hashtable that maps components to layers.
Returns the Integer object associated with a specified layer.
layer | an int specifying the layer |
---|
Primitive method that determines the proper location to insert a new child based on layer and position requests.
layer | an int specifying the layer |
---|---|
position | an int specifying the position within the layer |
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 null
.