Professional Documents
Culture Documents
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
Jess Cceres Tello Pg. 1 - 5
Curso de Java
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:
Descripcin 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. La mayora de los componentes van en esta capa.
DEFAULT_LAYER
new Integer(0)
PALETTE_LAYER
new Integer(100)
Esta capa es til para paletas y barras de herramientas flotantes. Los dilogos modales, como aquellos proporcionados por JOptionPane, pertenecen a esta capa. Los desplegables van en esta capa porque necesitan aparecer por encima de todo. Un componente se mueve a esta capa cuando se arrasta. Se debe devolver el componente a su capa normal cuando se suelta.
MODAL_LAYER
new Integer(200)
POPUP_LAYER
new Integer(300)
DRAG_LAYER
new Integer(400)
Pg. 2 - 5
Curso de Java
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.
Pg. 3 - 5
Curso de Java
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:
int getComponentCountInLayer(int)
Pg. 4 - 5
Curso de Java
Pg. 5 - 5