Administradores de diseño

El administrador  de diseño  determina  el tamaño  y la posición  de los componentes dentro de un contenedor. Como alternativa al uso de estos administradores, es posible asignar una posición absoluta mediante coordenadas de píxeles. La posición absoluta se obtiene definiendo la propiedad de diseño de un contenedor con el valor null. El posicionamiento  absoluto  no puede trasladarse  de una plataforma  a otra. Aspectos como el tamaño de los tipos de letra y las pantallas hacen que una posición que sea correcta según sus coordenadas, sea potencialmente inservible en otras plataformas.

Los distintos administradores de diseño son los siguientes:

  • BorderLayout
  • FlowLayout
  • BoxLayout
  • CardLayout
  • GridLayout
  • GridBagLayout
  • GroupLayout

BORDERLAYOUT

BorderLayout organiza los componentes en cinco zonas diferentes: CENTER, NORTH, SOUTH, EAST y WEST (centro, norte, sur, este y oeste, respectivamente). Este administrador   de  diseño  limita  a  uno  el número  de  componentes   que  pueden agregarse a cada zona.

Es necesario especificar la posición del componente.  Si no se especifica, se coloca automáticamente en el centro. Cualquier espacio sobrante lo usa el componente de la zona central.

BorderLayout es el diseño predeterminado para los objetos JFrame, JDialog y JApplet.

Ejemplo de código

Documentación oficial


FLOWLAYOUT

FlowLayout coloca los componentes en una fila. En su forma predeterminada, coloca los componentes de izquierda a derecha (LEFT_TO_RIGHT).  Esta orientación puede cambiarse  con la propiedad  ComponentOrientation  para que sea RIGHT_TO_LEFT, es decir, de derecha a izquierda. Es posible especificar el espacio vertical y horizontal que debe haber entre los componentes.  Si no se especifica, se utiliza una distancia predeterminada de cinco unidades en ambas direcciones.

Ejemplo en  el  cual  se  disponen  los  componentes  en  la misma fila:

Documentación oficial


BOXLAYOUT

BoxLayout organiza los componentes en disposición vertical u horizontal.

El  constructor  de  BoxLayout  utiliza  un  parámetro  llamado  “axis”  (eje)  que  debe utilizarse  para  indicar  la  dirección  en  la  que  se  alinearán  los  componentes.  Este parámetro puede adoptar los siguientes valores:

  • X_AXIS:  los  componentes   se  organizan   horizontalmente,   de  izquierda   a derecha.
  • Y_AXIS: los componentes se organizan verticalmente, de arriba abajo.
  • LINE_AXIS: los  componentes  se  colocan  en  la  misma  dirección  que  las palabras de una línea.
  • PAGE_AXIS: los componentes se colocan en la misma dirección que las líneas de una página.

Ejemplo:

Documentación oficial.


CARDLAYOUT

CardLayout organiza los componentes como una baraja de cartas. Cada carta acepta un único componente para su representación en pantalla.

Este  único  componente  se  convierte  en  un  contenedor,  con  lo  que  es  posible representar múltiples componentes dentro de una carta. Sólo puede verse una carta cada vez.

Los botones Button1, Button2 y Button3 se colocan en Carta1 y los botones Button4 y Button5  se colocan  en Carta2.  Se ha utilizado  un cuadro  combinado  para elegir la carta de debe aparecer en la pantalla.

A continuación vemos un ejemplo de este administrador de contenido.

En primer lugar vemos la declaración de la clase y las propiedades que utilizaremos:

Ahora podemos  ver los métodos  que utilizamos  para construir  los diferentes paneles. El panel superior donde a través de un combo se elije que carta ver, un panel inferior que será el encargado de mostrar la carta elegida y otros dos paneles inferiores que contendrán cada una de las cartas.

En el constructor construimos el JFrame y los botones:

Como  hemos  visto  en  la  declaración  de  la  clase,  esta  implementa  la  interface ActionListener para poder manejar eventos.

El método que vemos a continuación pertenece a dicha interface y lo utilizamos para detectar el evento provocado por el usuario al elegir una carta u otra.

En función de lo que se ha seleccionado en el combo se mostrará un panel inferior u otro.

Para  terminar  con  nuestro  ejemplo  vemos  el  método  launchFrame  que  será  el encargado de construir toda la interface gráfica y el método main a través del cual se ejecutará:

Descargar ejemplo completo

Documentación oficial


GRIDLAYOUT

GridLayout coloca los componentes en filas y columnas. Cada componente ocupa la misma cantidad de espacio en el contenedor.

Al  crear  el  diseño  de  la  cuadrícula,  es  preciso  especificar  el  número  de  filas  y columnas. Si no se especifica, el administrador crea una fila y una columna. También se puede indicar la distancia horizontal y vertical entre los componentes.

Documentación oficial.


GRIDBAGLAYOUT

GridBagLayout organiza los componentes en filas y columnas, de forma similar a la del diseñador de cuadrículas, pero, para mayor flexibilidad, incluye opciones para cambiar el tamaño y especificar la posición de los componentes.  Es un diseño utilizado para crear interfaces complejas.

Las restricciones aplicadas a los componentes se especifican mediante la clase GridBagConstraints.  Algunas  restricciones  de  esta  clase  son  gridwidth,  gridheight, gridx, gridy, weightx y weighty.

En la siguiente figura vemos un ejemplo de este administrador de diseño.