Sie sind auf Seite 1von 4

BoxLayout

Este administrador de diseo se emplea para colocar los elementos uno detrs de otro de
arriba abajo formando una pila o bien de izquierda a derecha formando una cola. Cada uno
de
los componentes de la pila o de la cola ocupa nicamente el tamao necesario.

En el ejemplo del listado 2 las etiquetas se apilan de arriba abajo. El constructor de la clase
BoxLayout recibe dos parmetros: el primero es el contenedor y el segundo es un valor
numrico que determina si se va a formar una pila (eje X) o una cola (eje Y).
Listado 2

public void boxLayoutSetting()


{
jLabel[0] = new JLabel("PAGE_START");
jLabel[0].setBackground(Color.BLUE);
jLabel[0].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[0].setOpaque(true);
jLabel[1] = new JLabel("LINE_START");
jLabel[1].setBackground(Color.RED);
jLabel[1].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[1].setOpaque(true);
jLabel[2] = new JLabel("CENTER");
jLabel[2].setBackground(Color.ORANGE);
jLabel[2].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[2].setOpaque(true);
jLabel[3] = new JLabel("LINE_END");
jLabel[3].setBackground(Color.MAGENTA);
jLabel[3].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[3].setOpaque(true);
jLabel[4] = new JLabel("PAGE_END");
jLabel[4].setBackground(Color.YELLOW);
jLabel[4].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[4].setOpaque(true);
Container contentPane = getContentPane();
BoxLayout boxLayout =
new BoxLayout(contentPane, BoxLayout.Y_AXIS);
contentPane.setLayout(boxLayout);
contentPane.add(jLabel[0]);
contentPane.add(jLabel[1]);
contentPane.add(jLabel[2]);
contentPane.add(jLabel[3]);
contentPane.add(jLabel[4]);
}

GridBagLayout
GridBagLayout es el administrador de diseo ms complejo de todos. A grandes rasgos se
puede decir que permite colocar los componentes en filas y columnas formando una tabla,
permitiendo adems que algunas celdas se expandan horizontal o verticalmente, o fijando
anchuras o alturas preferidas con valores absolutos o porcentajes. La clase
GridBagConstraints se emplea para fijar las caractersticas de cada una de las celdas que
constituyen la cuadrcula de diseo. Las propiedades de esta clase permiten determinar
distintos aspectos relacionados con el tamao, la posicin y el comportamiento del
componente:
gridx, gridy: Controla la celda que ocupa el componente en la cuadrcula.
gridwidth, gridheight: Controla el nmero de celdas sobre las que se extiende el
componente, horizontal o verticalmente.
weightx, weighty: Controla cmo se asigna al componente el espacio adicional.
ipadx, ipady: Determina el espacio existente entre el componente y los extremos del
rea que ocupa.
anchor: Si existe espacio adicional, controla la posicin del componente dentro de
dicho espacio.
instes: Controla los mrgenes del componente.
Seguidamente se va a mostrar un ejemplo en el que se distribuyen cinco etiquetas en una
cuadrcula.

El administrador de diseo GridBagLayout establece una cuadrcula en cuyas celdas se


colocan los componentes.
En primer lugar se establece que el administrador de diseo del contenedor principal sea del
tipo Grid BagLayout y adems se crea una instancia de la clase GridBagConstraints:
Container contentPane = getContentPane();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();

A partir de este momento los componentes se van creando, se establecen los valores de las
propiedades de la instancia de la clase GridBagConstraints que fijan su aspecto en la
cuadrcula, y se van aadiendo al contenedor principal.
jLabel[0] = new JLabel("Etiqueta 1");

jLabel[0].setBackground(Color.BLUE);
jLabel[0].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[0].setOpaque(true);
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
contentPane.add(jLabel[0], gridBagConstraints);

Como se puede deducir por el cdigo la primera etiqueta ocupa la celda situada
en la posicin (0,0). El mtodo add en este caso recibe como segundo parmetro la
instancia de la clase GridBagConstraints que determina las caractersticas de diseo de ese
componente.
La siguiente etiqueta ocupa la posicin (1,0) de la cuadrcula y adems se establece que el
componente se extienda u ocupe un espacio adicional de 20 unidades horizontalmente y 40
verticalmente.
jLabel[1] = new JLabel("Etiqueta 2");
jLabel[1].setBackground(Color.RED);
jLabel[1].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[1].setOpaque(true);
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.ipadx += 20;
gridBagConstraints.ipady += 40;
contentPane.add(jLabel[1], gridBagConstraints);

Obsrvese que se est utilizando el mismo GridBagConstraints objeto para configurar el


diseo de cada uno de los componentes que forman la cuadrcula por lo que es preciso
deshacer los cambios introducidos antes de pasar al siguiente elemento de la interfaz.
gridBagConstraints.ipadx -= 20;
gridBagConstraints.ipady -= 40;

El resto de las etiquetas se disponen de la siguiente forma. Por ejemplo, la ltima de las
etiquetas utiliza el atributo gridwidth para que ocupe dos celdas de la cuadrcula.
jLabel[4] = new JLabel("Etiqueta 5");
jLabel[4].setBackground(Color.YELLOW);
jLabel[4].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[4].setOpaque(true);
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = GridBagConstraints.BOTH;
contentPane.add(jLabel[4], gridBagConstraints);

Listado gridBagLayoutSetting
public void gridBagLayoutSetting()
{
Container contentPane = getContentPane();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints gridBagConstraints = new GridBagConstraints();

jLabel[0] = new JLabel("Etiqueta 1");


jLabel[0].setBackground(Color.BLUE);
jLabel[0].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[0].setOpaque(true);
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
contentPane.add(jLabel[0], gridBagConstraints);
jLabel[1] = new JLabel("Etiqueta 2");
jLabel[1].setBackground(Color.RED);
jLabel[1].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[1].setOpaque(true);
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.ipadx += 20;
gridBagConstraints.ipady += 40;
contentPane.add(jLabel[1], gridBagConstraints);
gridBagConstraints.ipadx -= 20;
gridBagConstraints.ipady -= 40;
jLabel[2] = new JLabel("Etiqueta 3");
jLabel[2].setBackground(Color.ORANGE);
jLabel[2].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[2].setOpaque(true);
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
contentPane.add(jLabel[2], gridBagConstraints);
jLabel[3] = new JLabel("Etiqueta 4");
jLabel[3].setBackground(Color.MAGENTA);
jLabel[3].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[3].setOpaque(true);
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
contentPane.add(jLabel[3], gridBagConstraints);
jLabel[4] = new JLabel("Etiqueta 5");
jLabel[4].setBackground(Color.YELLOW);
jLabel[4].setHorizontalAlignment(JLabel.HORIZONTAL);
jLabel[4].setOpaque(true);
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = GridBagConstraints.BOTH;
contentPane.add(jLabel[4], gridBagConstraints);
}