Ejemplo con javax.swing.Box

De ChuWiki


'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