Uso del BoxLayout

2456 vistas

Este gestionador permite colocar los componente en la misma línea o la misma colimna.

Como para los demás gestionadores, podemos usarlo como un gestionador de contenido (JFrame, JPanel...). No obstante existe un contenedor "dedicado", el Box, el gestionador por defecto del cual es un BoxLayout.

Usar Box nos permite tener varios BoxLayout en un mismo cotenedor (en el JFrame por ejemplo).

Los componentes se añaden:

  • de izquierda a derecha para el BoxLayout horizontal
  • de arriba abajo para el BoxLayout vertical

Por defecto, los componentes se pegan unos a otro. Para espaciarlos, tendremos que añadir reservas entre los componentes de las que tenemos 3 tipos:

  • Strut, que añade un espacio dado en pÃxels. Es unidimensional => existe un Strut horizontal y otro vertical
  • RigidArea, equivalente a una pareja de Strut horizontal/vertical
  • Glue, que posiciona los 2 componentes vecinos lo mas lejos posible el uno del otro.



java
  1. class BoxLayoutFrame extends JFrame
  2. {
  3.     public BoxLayoutFrame ()
  4.     {
  5.         setTitle("BoxLayout Test");
  6.         setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
  7.         JLabel nombreLabel = new JLabel("Nombre : ");
  8.         JTextField nombreText = new JTextField(10);
  9.         nombreText.setMaximumSize(nombreText.getPreferredSize());
  10.         Box hBox1 = Box.createHorizontalBox();
  11.         hBox1.add(nombreLabel);
  12.         hBox1.add(Box.createHorizontalStrut(5));
  13.         hBox1.add(nombreText);
  14.         JLabel apellidoLabel = new JLabel("Apellido : ");
  15.         JTextField apellidoText = new JTextField(10);
  16.         apellidoText.setMaximumSize(apellidoText.getPreferredSize());
  17.         Box hBox2 = Box.createHorizontalBox();
  18.         hBox2.add(apellidoText);
  19.         hBox2.add(Box.createHorizontalStrut(5));
  20.         hBox2.add(apellidoText);
  21.         Box hBox3 = Box.createHorizontalBox();
  22.         hBox3.add(new JButton("OK"));
  23.         hBox3.add(Box.createGlue());
  24.         hBox3.add(new JButton("Cancelar"));
  25.         Box vBox = Box.createVerticalBox();
  26.         vBox.add(hBox1);
  27.         vBox.add(hBox2);
  28.         vBox.add(Box.createGlue());
  29.         vBox.add(hBox3);
  30.         Container c = getContentPane();
  31.         c.add(vBox,BorderLayout.CENTER);
  32.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  33.     }
  34.     static final int DEFAULT_WIDTH = 200;
  35.     static final int DEFAULT_HEIGHT = 150; 
  36. }