Usar Controladores de Distribución

Cada contenedor, tiene un controlador de disposición por defecto -- un objeto que implementa el interface LayoutManager..*Si el controlador por defecto de un contenedor no satisface sus necesidades, puedes reemplazarlo fácilmente por cualquier otro. El AWT suministra varios controladores de disposición que van desde los más sencillos (FlowLayout y GridLayout) a los de propósito general (BorderLayout y CardLayout) hasta el ultra-flexible (GridBagLayout) y BoxLayout).

Esta lección da algunas reglas generales para el uso de los controladores de disposición, le ofrece una introducción a los controladores de disposición proporcionados por el AWT, y cuenta cómo utilizar cada uno de ellos. En estas páginas encontrarás applets que ilustran los controladores de disposición. Cada applet trae una ventana que se puede redimensionar para ver los efectos del cambio de tamaño en la disposición de los componentes.

Reglas Generales para el uso de Controladores de Distribución

Esta sección responde algunas de las preguntas más frecuentes sobre los controladores de disposición:
  • ¿Cómo puedo elegir un controlador de disposición?
  • ¿Cómo puedo crear un controlador de disposición asociado con un contenedor, y decirle que empiece a trabajar?
  • ¿Cómo sabe un controlador de disposición los componentes que debe manejar?

Cómo usar BorderLayout

BorderLayout es el controlador de disposición por defecto para todas las ventanas, como Frames y Cuadros de Diálogo. Utiliza cinco áreas para contener los componentes: north, south, east, west, and center (norte, sur, este, oeste y centro). Todo el espacio extra se sitúa en el área central. Aquí tienes un applet que sitúa un botón en cada área.

Pulsa sobre la imagen para ejecutar el applet.
Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecerá en una nueva ventana del navegador.

Cómo usar BoxLayout

La clase BoxLayout pone los componentes en una sóla fila columna. Respeta las peticiones de máximo tamaño dle componente, y también permite alinearlos. Aqui tienes un applet que pone un conjunto de botones en un columna centrada:

Pulsa sobre la imagen para ejecutar el applet.
Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecerá en una nueva ventana del navegador.

Cómo usar CardLayout

La clase CardLayout permite implementar un área que contiene diferentes componentes en diferentes ocasiones. Tabbed panes son componentes Swing intermediarios que propocionan una funcionalidad similar, pero con un GUI predefinido. Un CardLayout normalmente está controlador por un combo box, el estado del combo box determina que panel (grupo de componentes) muestra el CardLayout. Aquí hay un applet que usa un combo box y CardLayout de esta forma:

Pulsa sobre la imagen para ejecutar el applet.
Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecerá en una nueva ventana del navegador.

Cómo usar FlowLayout

FlowLayout es el controlador por defecto para todos los Paneles. Simplemente coloca los componentes de izquierda a derecha, empezando una nueva línea si es necesario. Los dos paneles en el applet anterior utilizan FlowLayout. Aquí tienes otro ejemplo de applet que utiliza un FlowLayout.

Pulsa sobre la imagen para ejecutar el applet.
Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecerá en una nueva ventana del navegador.

Cómo usar GridLayout

GridLayout simplemente genera un razimo de Componentes que tienen el mismo tamaño, mostrándolos en una sucesión de filas y columnas. Aquí tienes un applet que utiliza un GridLayout para controlar cinco botones:

Pulsa sobre la imagen para ejecutar el applet.
Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecerá en una nueva ventana del navegador.

Cómo usar GridBagLayout

GridBagLayout es el más sofisticado y flexible controlador de disposición proporcionado por el AWT. Alínea los componentes situándolos en una parrilla de celdas, permitiendo que algunos componentes ocupen más de una celda. Las filas de la parrilla no tienen porque ser de la misma altura; de la misma forma las columnas pueden tener diferentes anchuras. Aquí tiene un applet que utiliza un GridBagLayout para manejar diez botones en un panel:

Pulsa sobre la imagen para ejecutar el applet.
Esta es una imagen del GUI del Applet. Para ejecutarlo pulsa sobre ella y el applet aparecerá en una nueva ventana del navegador.


* En el JDK 1.1 se introdujo uno segundo inteface LayoutManager2. Este nuevo interface extiende LayoutManager, proporcionando soporte para tamaño máximo y alineamiento. Actualmente sólo BoxLayout implementa LayoutManager2. Todos los demás controladores de distribución de la plataforma Java implementan sólo LayoutManager.

Ozito