javax.swing
public class JLayeredPane extends JComponent implements Accessible
Container
semantics.
Each child component of a Layered Pane
is placed within one
of several layers. JLayeredPane
defines a set of standard
layers. The pre-defined sets are (in the order from button to top):
A child is in exactly one of these layers at any time, though there may be other layers if someone creates them.
You can add a component to a specific layer using the
{@link Container#add(Component, Object)} method. I.e.
layeredPane.add(comp, JLayeredPane.MODAL_LAYER)
will add the
component comp
to the modal layer of layeredPane
.
To change the layer of a component that is already a child of
a JLayeredPane
, use the {@link #setLayer(Component, int)}
method.
The purpose of this class is to translate this view of "layers" into a contiguous array of components: the one held in our ancestor, {@link java.awt.Container}.
There is a precise set of words we will use to refer to numbers within this class:
component
array held in our ancestor,
{@link java.awt.Container}, from [0 .. component.length)
. The drawing
rule with indices is that 0 is drawn last.int
specifying a layer within this component. Negative
numbers are drawn first, then layer 0, then positive numbered layers, in
ascending order.Note: the layer numbering order is the reverse of the component indexing and position order
Nested Class Summary | |
---|---|
protected class | JLayeredPane.AccessibleJLayeredPane
Provides accessibility support for JLayeredPane . |
Field Summary | |
---|---|
static Integer | DEFAULT_LAYER |
static Integer | DRAG_LAYER |
static Integer | FRAME_CONTENT_LAYER |
static String | LAYER_PROPERTY |
static Integer | MODAL_LAYER |
static Integer | PALETTE_LAYER |
static Integer | POPUP_LAYER |
Constructor Summary | |
---|---|
JLayeredPane() |
Method Summary | |
---|---|
protected void | addImpl(Component comp, Object layerConstraint, int index)
Overrides the default implementation from {@link java.awt.Container}
such that layerConstraint is interpreted as an {@link
Integer}, specifying the layer to which the component will be added
(at the bottom position).
|
AccessibleContext | getAccessibleContext()
Returns the accessible context for this JLayeredPane .
|
int | getComponentCountInLayer(int layer)
Return the number of components within a layer of this
container.
|
Component[] | getComponentsInLayer(int layer)
Return an array of all components within a layer of this
container. |
protected Hashtable<Component,Integer> | getComponentToLayer()
Return a hashtable mapping child components of this container to
Integer objects representing the component's layer assignments. |
int | getIndexOf(Component c)
Return the index of a component within the underlying (contiguous)
array of children. |
int | getLayer(Component c)
Looks up the layer a child component is currently assigned to.
|
static int | getLayer(JComponent comp)
Looks up the layer in the client property with the key
{@link #LAYER_PROPERTY} of comp . |
static JLayeredPane | getLayeredPaneAbove(Component comp)
Returns the first JLayeredPane that contains the Component
comp or null if comp is
not contained in a JLayeredPane.
|
protected Integer | getObjectForLayer(int layer)
Return an Integer object which holds the same int value as the
parameter. |
int | getPosition(Component c)
Return the position of a component within its layer. |
int | highestLayer()
Return the greatest layer number currently in use, in this container.
|
protected int | insertIndexForLayer(int layer, int position)
Computes an index at which to request the superclass {@link
java.awt.Container} inserts a component, given an abstract layer and
position number.
|
boolean | isOptimizedDrawingEnabled()
Returns false if components in this layered pane can overlap,
otherwise true .
|
int | lowestLayer()
Return the least layer number currently in use, in this container.
|
void | moveToBack(Component c) Moves a component to the "back" of its layer. |
void | moveToFront(Component c)
Moves a component to the "front" of its layer. |
void | paint(Graphics g)
This method is overridden order to provide a reasonable painting
mechanism for JLayeredPane . |
static void | putLayer(JComponent component, int layer)
Sets the layer property for a JComponent.
|
void | remove(int index)
Removes a child from this container. |
void | removeAll()
Removes all components from this container.
|
void | setLayer(Component c, int layer) Set the layer property for a component, within this container. |
void | setLayer(Component c, int layer, int position)
Set the layer and position of a component, within this container.
|
void | setPosition(Component c, int position)
Change the position of a component within its layer. |
layerConstraint
is interpreted as an {@link
Integer}, specifying the layer to which the component will be added
(at the bottom position).
The argument index
specifies the position within the layer
at which the component should be added, where 0
is the top
position greater values specify positions below that and -1
specifies the bottom position.
Parameters: comp the component to add layerConstraint an integer specifying the layer to add the component to index the position within the layer
JLayeredPane
.
Returns: the accessible context for this JLayeredPane
Parameters: layer the layer count components in
Returns: the number of components in the layer
Parameters: layer the layer to return components from
Returns: the components in the layer
Parameters: c the component to look up.
Returns: the external index of the component or -1
if
c
is not a child of this layered pane
c
is an instance of {@link JComponent}, then the layer
is fetched from the client property with the key {@link #LAYER_PROPERTY}.
Otherwise it is looked up in an internal hashtable that maps
non-JComponent components to layers. If the components cannot be found
in either way, the {@link #DEFAULT_LAYER} is returned.
Parameters: c the component to look up.
Returns: the layer the component is currently assigned to; if the component is not in this layered pane, then 0 (DEFAULT_LAYER) is returned
comp
. If no such property can be
found, we return 0
({@link #DEFAULT_LAYER}).
Parameters: comp the component for which the layer is looked up
Returns: the layer of comp
as stored in the corresponding
client property, or 0
if there is no such property
comp
or null
if comp
is
not contained in a JLayeredPane.
Parameters: comp the component for which we are searching the JLayeredPane ancestor
Returns: the first JLayeredPane that contains the Component
comp
or null
if comp
is
not contained in a JLayeredPane
Parameters: layer the layer number as an int.
Returns: the layer number as an Integer, possibly shared.
Parameters: c the component to get the position of
Returns: the position of c
within its layer or -1 if
c
is not a child of this layered pane
See Also: JLayeredPane
Returns: the highest layer number
See Also: lowestLayer
Parameters: layer the layer in which to insert a component. position the position in the layer at which to insert a component.
Returns: the index at which to insert the component.
false
if components in this layered pane can overlap,
otherwise true
.
Returns: false
if components in this layered pane can overlap,
otherwise true
Returns: the least layer number
See Also: highestLayer
Moves a component to the "back" of its layer. The "back" is a synonym for position N-1 (also known as position -1), where N is the size of the layer.
The "back" of a layer is the first position drawn, so the component at the "back" is usually the component which is occluded by the most other components in its layer.
Parameters: c the component to move to the back of its layer.
See Also: JLayeredPane
Parameters: c the component to move to the front of its layer
See Also: JLayeredPane
JLayeredPane
. This is necessary since
JLayeredPane
's do not have an own UI delegate.
Basically this method clears the background for the
JLayeredPane
and then calls super.paint(g)
.
Parameters: g the graphics context to use
Parameters: component the component for which to set the layer layer the layer property to set
Parameters: index the index of the child component to remove.
Since: 1.5
Set the layer property for a component, within this container. The component will be implicitly mapped to the bottom-most position in the layer, but only if added after calling this method.
Read that carefully: this method should be called before the component is added to the container.
Parameters: c the component to set the layer property for. layer the layer number to assign to the component.
Parameters: c the child component to set the layer property for. layer the layer number to assign to the component. position the position number to assign to the component.
Parameters: c the component to change the position of position the position to assign the component to
See Also: JLayeredPane