Swing y JFC (Java Foundation Classes)

A menos que se le diga a un contenedor que no utilice un controlador de disposici�n, el est� asociado con su propio ejemplar de un controlador de disposici�n. Este controlador es consultado autom�ticamente cada vez que el contenedor necesita cambiar su apariencia. La mayor�a de los controladores de disposici�n no necesitan que los programan llamen directamente a sus m�todos.

.�C�mo elegir un Controlador de Distribuci�n

Los controladores de disposici�n proporcionados por la plataforma Java tienen diferentes potencias y puntos d�biles. Esta secci�n descubre algunos de los escenarios de distribuci�n m�s comunes y c�mo podr�an trabajar los controladores de distribuci�n del AWT en cada escenario. Si ninguno de los controladores del AWT se adapta a nuestra situaci�n, deberiamos; sentirnos libres para utilizar controladores de distribuci�n distribuidos por la red, o escribir el nuestro propio.

Escenario:Necesitamos mostrar un componente en todo el espacio que se pueda conseguir.
Consideramos la utilizaci�n de BorderLayout o GridBagLayout. Si utilizamos BorderLayout, necesitarremos poner el componente que necesite m�s espacio en el centro. Con GridBagLayout, necesitaremos seleccionar las restricciones del componente para que fill=GridBagConstraints.BOTH. Otra posibilidad es usar BoxLayout, haciendo que el componente con m�s tama�o especifique unos tama�o preferido y m�ximo muy grandes
Escenario: Necesitamos mostrar unos pocos componentes en una fila compacta a su tama�o natural.
Consideramos usar un JPanel para contener los componentes y usar el controlador por defecto de JPanel que es FlowLayout o usar BoxLayout.
Escenario: Necesitamos mostrar unos pocos componentes del mismo tama�o en filas y columnas.
GridLayout es perfecto para esto.
Escenario: Necesitamos mostrar unos pocos componentes en filas y columnas, posiblemente variando la cantidad de espacio entre ellos, con alineamientos personalizados, o tama�os de componentes personalizados.
BoxLayout es perfecto para esto
Escenario: Tenemos una distribuci�n compleja con muchos componentes
Debemos considerar la utilizaci�n de GridBagLayout o agrupar los componetes en uno o m�s JPanel para simplificar la distribuci�n. Cada JPanel daber�a usar un diferente controlador de distribuci�n.

.�C�mo crear un Controlador de Distribuci�n y Asociarlo con un Contenedor

Como se mencion� en Control de Distribuci�n, por convenci�n, cada contenedor tiene su controlador de distribuci�n. Todos los objetos JPanel se inicializan para usar un FlowLayout. El panel de contenidos para todos los objetos JApplet, JDialog, y JFrame est� inicializado para usar un BorderLayout. Otros contendores Swing tienden a tener controladores de distribuci�n muy especializados o, como en el caso de JLayeredPane, no tienen controlador de distribuci�n.

Si queremos utilizar el controlador de distribuci�n por defecto de un Contenedor, no tenemos que hacer nada. El constructor de cada Contenedor crea un ejemplar del controlador de distribuci�n e inicializa el Contenedor para que lo utilice.

Para utilizar un controlador de disposici�n que no sea por defecto, necesitaremos crear un ejemplar de la clase del controlador deseado y luego decirle al contenedor que lo utilice. Normalmente s�lo haremos esto para JPanel y para paneles de contenido. La siguiente sentencia crea un controlador BorderLayout y lo inicializa como controlador de distribuci�n para un panel

aJPanel.setLayout(new BorderLayout());

Aqu� podemos ver un ejemplo de hacer que un objeto FlowLayout sea el controlador de distribuci�n para el panel de contenido de un applet.

//In a JApplet subclass.
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());

.�Reglas del pulgar para usar Controladores de Distribuci�n

Los m�todos de Container que dan como resultado llamadas a su controlador de distribuci�n son add, remove, removeAll, doLayout, invalidate, getAlignmentX, getAlignmentY, getPreferredSize, getMinimumSize, y getMaximumSize. Los m�toso add, remove, y removeAll a�aden y eliminan componentes de un contenedor; se les puede llamar en cualquier momento. El m�todo doLayout, que es llamado como resultado de cualquier petici�n de dibujado de un contenedor o de una llamada a validate sobre el contenedor, requiere que el contenedor se situe y redimensione a s� mosmo y a los componentes que contiene; no se puede llamar al m�todo doLayout directamente.

Si cambiamos el tama�o d eun componente, aunque sea indirectamente como cambiando su fuente, el componente deber�a redimensionarse autom�ticamente y redibujarse a s� mismo. Si esto no sucediera por alguna raz�n, deber�amos invocar al m�todo revalidate del componente. Esta petici�nes pasada a trav�s del �rbol de contenientes hasta que encuentre un contenedor, como un scroll-pane o un contenedor de alto nivel, que no deber�a verse afecta por el redimensionado del componene. (Esto est� determinado por la llamda al m�todo isValidateRoot del contenedor.) El contenedor es entonces redistribuido, lo que tiene el efecto de ajustar los componentes revalidados y todos los dem�s componentes afectados. Despu�s de llamar a revalidate sobre un componene se deber�a llamar a repaint.

Los m�todos getAlignmentX y getAlignmentY son llamados por los controladores de distribuci�n para intenrar alinear grupos de componentes. BoxLayout es el �nico controlador de distribuci�n que llama a estos m�todos.

Los m�todos getPreferredSize, getMinimumSize, y getMaximumSize retornan los tama�os ideal, m�nimo y m�ximo, respectivamente. Los valores devueltos son s�lo indicativos, un controlador de distribuci�n puede ignorarlos.

COMPARTE ESTE ARTÍCULO

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