Está en la página 1de 5

Curso de Java

Jess Cceres Tello Pg. 1 - 5




El objeto JLayeredPane

Un LayeredPane es un componente Swing que proporciona una tercera dimensin
para posicionar componentes: profundidad, tambin conocida como eje Z.
Cuando se aade un componente a un panel por capas, se especifica su
profundidad. Los frames con mayor profundidad siempre solapan los frames con
menor profundidad y los frames con menor profundidad siempre estn debajo de
frames con mayor profundidad. Los frames con la misma profundidad pueden
cambiar su posicin. Por conveniencia, LayeredPane define varias layers (capas)
dentro del rango posible de profundiades para funciones especficas. Por ejemplo,
podemos poner un componente en la capa de mayor funcionalidad, la capa de
arrastre, cuando se arrastan componentes.
Todo contenedor Swing que tiene un panel raz, como JFrame, JApplet, JDialog,
y JInternalFrame -- automticamente tiene un layeredpane, aunque la mayora
de los programas no los utilizan explcitamente. Podemos crear nuestro propio
layeredpane y utilizarlo en cualquier lugar como un contenedor normal Swing.
Swing proporciona dos clases de paneles por capas. La primera, JLayeredPane, es
la clase que utilizan los paneles raz. La segunda, JDesktopPane, es una subclase
de JLayeredPane que est especializada para contener frames internos. El
ejemplo de esta seccin utiliza un ejemplar de JLayeredPane.
Aqu podemos ver una imagen de una aplicacin que utiliza paneles de capas para
manejar JInternalFrames en diferentes capas:

Cuando arranca el programa se crean cinco frames internos. El programa permite
mover el icono Duke alrededor de los frames. Observa la relacin de los frames


Curso de Java




Jess Cceres Tello Pg. 2 - 5

en las diferentes capas y los frames de al misma capa.

Las clases JFrame, JApplet, JDialog, y JInternalFrame proporcionan un mtodo
de conveniencia, getLayeredPane, para obtener el panel raz del layeredpane. El
programa anterior utiliza este mtodo para obtener el layeredpane al que aadirle
los frames internos:
Las lneas en negrita muestran dnde se aade al frame al layeredpane. El mtodo
add utilizado en este programa toma dos argumentos. El primero es el componente
a aadir; el segundo es un Integer indicando la profundidad donde poner el
componente. El valor puede ser cualquier Integer. Sin embargo, la mayora de los
programas utilizarn uno de aquellos definidos por la clase JLayeredPane:






Nombre de Capa Valor Descripcin
FRAME_CONTENT_LAYER
new Integer(-
30000)
Esta capa es utiliza para posicionar el panel
de contenido del frame y la barra de men.
La mayora de los programas no la utilizarn.
DEFAULT_LAYER
new
Integer(0)
La mayora de los componentes van en esta
capa.
PALETTE_LAYER
new
Integer(100)
Esta capa es til para paletas y barras de
herramientas flotantes.
MODAL_LAYER
new
Integer(200)
Los dilogos modales, como aquellos
proporcionados por JOptionPane,
pertenecen a esta capa.
POPUP_LAYER
new
Integer(300)
Los desplegables van en esta capa porque
necesitan aparecer por encima de todo.
DRAG_LAYER
new
Integer(400)
Un componente se mueve a esta capa cuando
se arrasta. Se debe devolver el componente a
su capa normal cuando se suelta.


Curso de Java




Jess Cceres Tello Pg. 3 - 5


La posicin de un componente determina su relacin con otros componentes de la
misma capa. Al contrario que los nmeros de capas, cuando ms bajo sea el
nmero de posicin ms alto estar el componente en su capa.
Se puede seleccionar la posicin de un componente cuando se le aade al
layeredpane proporcionando un tercer argumento al mtodo add. Las posiciones se
especifican con un int entre -1 y (N-1), donde N es el nmero de componentes en
la capa. Utilizar -1 es lo mismo que utilizar N-1; indica la posicin ms inferior.
Utilizar 0 especifica que el componente debera ir en la posicin superior de su
capa. Como se ve en la siguiente figura, con la excepcin de -1, un nmero de
posicin menor indica una posicin superior dentro de la capa.


Tanto la capa de un componente como su posicin relativa dentro de la capa
pueden cambiar. Para cambiar la capa de un componente normalmente se utiliza el
mtodo setLayer. Para cambiar la posicin de un componente dentro de su capa,
se puede utilizar los mtodos moveToBack y moveToFront proporcionados por
JLayeredPane.

Una Nota de Precaucin: Cuando se aade un componente a una LayeredPane se
especifica la capa con un Integer. Cuando se utiliza setLayer para cambiar la capa
de un componente, se utiliza un int. Mira las tablas que hay abajo para comprobar
los tipos de los argumentos y de los valores de retorno para otros mtodos de esta
clase que trabajan con capas.










Curso de Java




Jess Cceres Tello Pg. 4 - 5

El API LayeredPane
Las siguientes tablas listan los mtodos y constructores ms utilizados de la clase
JLayeredPane. Otros mtodos interesantes estn definidos por las clases
JComponent y Component.
El API para utilizar LayeredPane se divide en estas categoras:

Crear u Obtener un LayeredPane
Mtodo Propsito
JLayeredPane() Crea un LayeredPane.
JLayeredPane getLayeredPane()
(en JApplet, JDialog, JFrame, y JInternalFrame)
Obtiene el LayeredPAne en un applet, dialog,
frame, o frame interno.



Situar Componentes en Capas
Mtodo Propsito
void add(Component, Integer)
void add(Component, Integer, int)
Aade el componente especificado al
layeredpane. El segundo argumento indica la
capa. El tercer argumento, cuando existe, indica
la posicin del componente dentro de la capa.
void setLayer(Component, int)
void setLayer(Component, int, int)
Cambia la capa del componente. El segundo
argumento indica la capa, el tercer argumento,
cuando existe, indica la posicin del componente
dentro de la capa.
int getLayer(Component)
int getLayer(JComponent)
Obtiene la capa del componente especificado.
int getComponentCountInLayer(int)
Obtiene el nmero de componentes en la capa
especificada. El valor devuelto por este mtodo
puede ser til para calcular los valores de
posicin.
Component[]
getComponentsInLayer(int)
Obtiene un array con todos los componentes en
el capa especificada.
int highestLayer()
int lowestLayer()
Calcula la capa ms alta o ms baja actualmente
utilizadas.







Curso de Java




Jess Cceres Tello Pg. 5 - 5


Posicionar Componentes en una Capa
Mtodo Propsito
void setPosition(Component, int)
int getPosition(Component)
Selecciona u obtiene la posicin del componente
especificado dentro de su capa.
void moveToFront(Component)
void moveToBack(Component)
Mueve el componente especificado adelante o atrs
en su capa.

También podría gustarte