Uso del GridBagLayout
Artículo por Club Developers · 29 May 2006
3361 vistas
¡El terror del novato! Como el GridLayout, este gestionador permite posicionar los componentes en una rejilla, pero con más flexibilidad. El GridBagLayout funciona como una tabla en la que las celdas pueden fusionarse.
Para colocar los componentes tendremos que:
Estas son las condiciones que determinarán la posición de los componentes y el comportamiento en caso de redimensionado de la ventana. Los parámetros de un GridBagConstraints son:
La documentación AWT recomienda reemplzar la definición de los parámetros gridx y gridy en valores absolutos por la constante GridBagConstraints.RELATIVE.
Para indicar que un componente es el último de una línea, daremos a la longitud de su zona de mostrado (gridwidth) el valor GridBagConstraints.REMAINDER. Daremos este mismo valor a la altura de la zona de mostrado de los componente de la última línea.
Fases para usar un GridBagLayout:
[1] Visualizar en papel la posición de los componentes.
[2] Establecer el tamaño de las celdas de la rejilla para ocupar los componentes más pequeños.
[3] Borrado de líneas y columnas. Este borrado dará los valores de gridx, gridy, gridwidth, gridheight.
[4] Definir el redimensionado (fill) y la alineación (anchor) de los componentes.
[5] Poner las cargas (weightx et weigthy) a 100, lo ajustaremos luego. 0 para los componente que conservarán la medida dada por defecto.
[6] Escribie el código.
[7] Compilar, ejecutar y ajustar las cargas.
Ejemplo de uso del GridBagLayout:
Para colocar los componentes tendremos que:
- instanciar un GridBagLayout y pasarlo como gestionador de contenedor
- definir un GridBagConstraints para cada componente
- añadir cada par componente/GridBagConstraints al contenedor
Estas son las condiciones que determinarán la posición de los componentes y el comportamiento en caso de redimensionado de la ventana. Los parámetros de un GridBagConstraints son:
- gridx, gridy (int): número de lÃnia y columna de la esquina superior izquierda de la zona donde se mostrará el componente.
- gridwidth, gridheight (int): ancho y alto del componente en número de celdas.
- fill (int): comportamiento del componente durante el redimensionado si su medida y la de la zona de mostrado no se corresponden.
- anchor (int): alineamiento del componente en la zona de mostrado.
- weigthx, weigthy (double): comportamiento de la zona de mistrado e caso de redimensionado de la tabla.
- ipadx, ipady (int): valores de la medida mÃnima del componente
- insets (Insets): define los márgenes alrededor del componente.
La documentación AWT recomienda reemplzar la definición de los parámetros gridx y gridy en valores absolutos por la constante GridBagConstraints.RELATIVE.
Para indicar que un componente es el último de una línea, daremos a la longitud de su zona de mostrado (gridwidth) el valor GridBagConstraints.REMAINDER. Daremos este mismo valor a la altura de la zona de mostrado de los componente de la última línea.
Fases para usar un GridBagLayout:
[1] Visualizar en papel la posición de los componentes.
[2] Establecer el tamaño de las celdas de la rejilla para ocupar los componentes más pequeños.
[3] Borrado de líneas y columnas. Este borrado dará los valores de gridx, gridy, gridwidth, gridheight.
[4] Definir el redimensionado (fill) y la alineación (anchor) de los componentes.
[5] Poner las cargas (weightx et weigthy) a 100, lo ajustaremos luego. 0 para los componente que conservarán la medida dada por defecto.
[6] Escribie el código.
[7] Compilar, ejecutar y ajustar las cargas.
Ejemplo de uso del GridBagLayout:
java
{  public FontDialogFrame()  {    setTitle("FontDialog");    setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);    getContentPane().setLayout(layout);    // contrucción de los componentes     {       "Serif", "SansSerif", "Monospaced",       "Dialog", "DialogInput"     });    face.addActionListener(listener);     {       "8", "10", "12", "15", "18", "24", "36", "48"     });    size.addActionListener(listener);    bold.addActionListener(listener);    italic.addActionListener(listener);    sample.setText("hay que teclar código...");    sample.setEditable(false);    sample.setLineWrap(true);    // construcción de constraints y añadir las parejas componente/constraint    c1.gridx = 0;    c1.gridy = 0;    getContentPane().add(faceLabel,c1);    c2.gridx = 1;    c2.gridy = 0;    c2.weightx = 100;    c2.weighty = 0;    getContentPane().add(face,c2);    c3.gridx = 0;    c3.gridy = 1;    add(sizeLabel,c3);    c4.gridx = 1;    c4.gridy = 1;    c4.weightx = 100;    c4.weighty = 0;    getContentPane().add(size,c4);    c5.gridx = 0;    c5.gridy = 2;    c5.gridwidth = 2;    c5.gridheight = 1;    c5.weightx = 100;    c5.weighty = 100;    getContentPane().add(bold,c5);    c6.gridx = 0;    c6.gridy = 3;    c6.gridwidth = 2;    c6.gridheight = 1;    c6.weightx = 100;    c6.weighty = 100;    getContentPane().add(italic,c6);    c7.gridx = 2;    c7.gridy = 0;    c7.gridwidth = 1;    c7.gridheight = 4;    c7.weightx = 100;    c7.weighty = 100;    getContentPane().add(sample,c7);  }  public static final int DEFAULT_WIDTH = 300;  public static final int DEFAULT_HEIGHT = 200;  {    {     sample.setFont(font);     sample.repaint();    }  } }