A menudo, la mejor manera de manejar la colocación de widgets simple es en un escuchador de evento de redimensionamiento. Sin embargo, existen patrones comunes que las aplicaciones utilizan en el momento de colocar los widgets. Estos patrones se pueden estructurar como algoritmos de diseño configurables que muchas aplicaciones distintas pueden reutilizar.
SWT define diseños (layout) cuyo uso general es proporcionar la posibilidad de situar y dimensionar los widgets hijos en un compuesto. Los diseños son subclases de la clase abstracta Layout. Los diseños estándar de SWT se encuentran en el paquete org.eclipse.swt.layout.
Hay algunas definiciones generales que se utilizan al redimensionar y colocar los widgets:
Estos conceptos son importantes para las aplicaciones, con independencia de si se utiliza o no un diseño. Podríamos decir que un diseño es una manera práctica de empaquetar la función de redimensionamiento para la reutilización.
Los diseños presentan algunos conceptos adicionales:
En el tema Interpretar los diseños en SWT encontrará más información e imágenes que muestran estos conceptos.
El siguiente fragmento de código muestra el caso simple de una aplicación que utiliza un retorno de llamada de redimensionamiento para dimensionar una etiqueta con el tamaño de la shell padre:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { label.setBounds (shell.getClientArea ()); } });
El siguiente fragmento de código utiliza un diseño para obtener el mismo efecto:
Display display = new Display (); Shell shell = new Shell (display); Label label = new Label (shell, SWT.CENTER); shell.setLayout(new FillLayout());
Incluso en este sencillo ejemplo, el hecho de utilizar un diseño reduce el código de la aplicación. En el caso de diseños más complejos, la simplificación es mucho mayor.
La siguiente tabla ofrece un resumen de los diseños estándar proporcionados por SWT.
Diseño |
Finalidad |
---|---|
FillLayout | Dispone los controles en una sola fila o columna, haciendo que tengan el mismo tamaño. |
FormLayout | Sitúa los hijos mediante FormAttachments para configurar opcionalmente los bordes izquierdo, superior, derecho e inferior de cada hijo. |
GridLayout | Sitúa los hijos por filas y columnas. |
RowLayout | Coloca los hijos en filas horizontales o columnas verticales. |