Ejemplo con javax.swing.Box
'javax.swing.Box es un contenedor ligero de java para añadir componentes swing. Nos permite añadir los componentes en horizontal o en vertical. Es muy similar a poner un BoxLayout en un contenedor javax.swing. Y tiene una particularidad interesante, que permote poner componentes "pegamento". Estos componentes se estiran para ocupar todo el espacio disponible.
Veamos un ejemplo sencillo.
public class BoxContainerExample {
public static void main(String[] args) {
// Se crea la ventana con el BoxLayout
JFrame v = new JFrame();
Box box = Box.createHorizontalBox();
// Se crea un botón centrado y se añade
JButton boton = new JButton("B");
box.add(boton);
box.add(Box.createHorizontalGlue());
// Se crea una etiqueta centrada y se añade
JLabel etiqueta = new JLabel("una etiqueta larga");
box.add(etiqueta);
v.getContentPane().add(box);
// Visualizar la ventana
v.pack();
v.setVisible(true);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
Hemos creado un Box horizontal, es decir, los componentes que le añadamos se colocoran en horizontal, uno detrás de otro.
Tras añadir el primer componente, un botón, añadimos un horizontalGlue. Este componente se expadirá hasta ocupar todo el espacio disponible, de forma que los componentes ya añadidos se pegarán a la izquierda y los que añadamos detrás se pegarán a la derecha.
Terminamos de añadir componentes y metemos el box en la ventana principal. El resultado es el de la siguiente imagen
Podríamos usar este componente "pegamento" Box.createHorizontalGlue() dentro de un BoxLayout y funcionaría correctamente. No podemos usarlo, sin embargo, en un FlowLayout