BoxLayout

De ChuWiki


El BoxLayout es un Layout simple que permite poner los componentes de forma horizontal (igual que un FlowLayout) o de forma vertical.

El siguiente código coloca los componentes en la ventana (el botón y la etiqueta) en vertical y centrados.

package chuidiang.ejemplos;

import java.awt.Component;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class PruebaBoxLayout {
	public static void main(String [] args)
	{
		// Se crea la ventana con el BoxLayout
		JFrame v = new JFrame();
		v.getContentPane().setLayout(new BoxLayout(v.getContentPane(),BoxLayout.Y_AXIS));
		
		// Se crea un botón centrado y se añade
		JButton boton = new JButton("B");
		boton.setAlignmentX(Component.CENTER_ALIGNMENT);
		v.getContentPane().add(boton);
		
		// Se crea una etiqueta centrada y se añade
		JLabel etiqueta = new JLabel("una etiqueta larga");
		etiqueta.setAlignmentX(Component.CENTER_ALIGNMENT);
		v.getContentPane().add(etiqueta);
		
		// Visualizar la ventana
		v.pack();
		v.setVisible(true);
		v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	}
}

Lo de BoxLayout.Y_AXIS es para que coloque los componente en vertical, de arriba a abajo. Con BoxLayout.X_AXIS los coloca igual que un FlowLayout, de izquierda a derecha.

También hay BoxLayout.LINE_AXIS e BoxLayout.PAGE_AXIS, pero el comportamiento por defecto es igual. El comportamiento es distinto si al contenedor le cambiamos el setComponentOrientation(), en cuyo caso podemos conseguir que los componentes vayan de derecha a izquierda según los vamos añadiendo o de abajo a arriba.

En el ejemplo hemos puesto los componentes en columna vertical. Si los componentes tienen distinto tamaño horizontal, podemos indicar si los queremos alienados a derecha, a izquierda o centrados. Para ello hay que ir llamando uno por uno a su método setAlignmentX(Component.CENTER_ALIGNMENT) (o Component.LEFT_ALIGNMENT o Component.RIGHT_ALIGNMENT). Puedes probar a poner "alignment" distintos a cada uno. Conseguierás colocaciones verdaderamente extrañas.