Swing y JFC (Java Foundation Classes)

JPanel es un contenedor de prop�sito general para componentes de peso ligero. Como todos los contenedores, utiliza un Controlador de Distribuci�n para posicionar y dimensionar sus componentes. Como todos los componentes Swing, JPanel permite a�adirle bordes y determinar si utiliza el doble buffer para aumentar el rendimiento.

Esta imagen muestra una aplicaci�n que utiliza un panel y su controlador de distribuci�n por defecto, FlowLayout, para mostrar tres botones.

La clase principal de esta aplicaci�n es ButtonDemo, que es una subclase de JPanel. Aqu� puedes ver el c�digo del constructor de ButtonDemo que le a�ade los tres botones al panel.

public ButtonDemo() {
    super();
    ...
    create the three buttons
    ...
    //Add Components to this container, using the default FlowLayout.
    add(b1);
    add(b2);
    add(b3);
}

Este c�digo no selecciona expl�citamente el controlador de distribuci�n del panel, por eso utiliza el controlador por defecto. Este controlador de distribuci�n, FlowLayout, sit�a los componentes en una fila con sus tama�os preferidos. Si queremos utilizar otro controlador de distribuci�n, podemos especicar el controlador cuando creamos el objeto JPanel o utilizar el m�todo setLayout posteriormente. El AWT proporciona una colecci�n de �tiles controladores de distribuci�n, y Swing a�ade otro controlador de distribuci�n de prop�sito general, BoxLayout.

El fragmento de c�digo anterior utiliza un m�todo add heredado de java.awt.Container que requiere un s�lo argumento: el componente a a�adir. Como otras subclases de Container, JPanel hereda otros m�todos add que permiten especificar restricciones e informaci�n sobre posicionamiento cuando se a�ade un componente. Se debe elegir el m�todo add para el controlador de disposici�n que se est� utilizando.

.�Otros Contenedores

JPanel es s�lo una de las varias clases de contenedores que se pueden utilizar. Existen algunos contenedores de prop�sito especial que podr�amos utilizar en lugar de un JPanel.

Box Autom�ticamente utiliza un BoxLayout para distribuir sus componentes. La ventaja de Box es que es de peso superligero, ya que desciende directamente de la clase Container. Su desventaja es que no es un verdadero componente Swing -- no hereda el API que soporta caracter�sitcas como los bordes de la caja, ni la selecci�n sencilla de los tama�os m�ximo, m�nimo y preferido. Por esta raz�n, nuestros ejemplos utilizan JPanel con BoxLayout, en vez Box.
JLayeredPane Proporciona una tercera dimensi�n, profundidad, para posicionar componentes. Los paneles con capas no tienen controladores de distribuci�n pero pueden ser utilizados para colocar los componentes en capas en un JPanels. Un tipo de layeredpane, JDesktopPane, est� dise�ado espec�ficamente para manejar frames internos.
JScrollPane Proporciona una vista desplazable de un componente grande.
JSplitPane Muestra dos componentes cuyos tama�os relativos pueden ser modificados por el usuario.
JTabbedPane Permite a varios componentes, normalmente objetos JPanel, compartir el mismo espacio.

Otro contenedor que podr�amos utilizar es el panel de contenido por defecto de un applet, frame, internal frame, o dialog. El panel de contenido es un Container que, como regla, contiene todos los componentes no-men�s de la ventana. Se puede encontrar el panel de contenido utilizando un m�todo llamado getContentPane. De forma similar, se puede seleccionar el panel de contenido -- quiz�s para que sea un JPanel que hayamos creado -- utilizando setContentPane.

.�El API JPanel

El API de la propia clase JPanel es m�nimo. Los m�todos que m�s se utilizan de un objeto JPanel son aquellos que hereda de sus superclases JComponent, Container y Component.

.�Crear un JPanel

M�todo Prop�sito
JPanel()

JPanel(boolean)

JPanel(LayoutManager)

JPanel(LayoutManager, boolean)

Crea un panel. Cuando est� presente, el par�metro boolean determina la estrateg�a de buffer del panel. Un valor true indica doble buffer. El par�metro LayoutManager proporciona el controlador de distribuci�n para el nuevo panel. Si no se especifica, el panel utiliza FlowLayout para distribuir sus componentes.

.�Manejar Componentes en un Contenedor

M�todo Prop�sito
void add(Component)

void add(Component, int)

void add(Component, Object)

void add(Component, Object, int)

void add(String, Component)

A�ade el componente especificado al panel. Cuando existe, el par�metro int es la posici�n o �ndice del componente dentro del contenedor. El par�metro Object depende del controlador de distribuci�n y normalmente proporciona informaci�n sobre el posicionamiento y restricciones de distribuci�n cuando se a�aden componentes. El par�metro String proporciona un nombre para el componente.
int getComponentCount() Obtiene el n�mero de componentes en este panel.
Component getComponent(int)

Component getComponentAt(int, int)

Component getComponentAt(Point)

Component[] getComponents()

Obtiene el componente o componentes especificados. Se pueden obtener bas�ndose en su �ndice, o en sus posiciones x,y.
void remove(Component)

void remove(int)

void removeAll()

Elimina el componente o componentes especificados.

.�Seleccionar/Obtener el Controlador de Distribuci�n

M�todo Prop�sito
void setLayout(LayoutManager)

LayoutManager getLayout()

Selecciona u obtiene el controlador de distribuci�n para este panel. El controlador de distribuci�n es el responsable de posicionar los componentes dentro del panel de acuerdo con alguna filosof�a.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR