Red social para profesionales IT

Ingresar
Java

Java

Dudas, soluciones, alternativas, consejos y todo lo que se te pueda ocurrir respecto al lenguaje Java

  • Páginas
  • Java
  • Swing: pasos para crear layouts utilizando GridBagLayout- parte 3

Swing: pasos para crear layouts utilizando GridBagLayout- parte 3


Vamos a retomar  el ejemplo anterior, utilizando las mismas propiedades explicadas.  Veamos la siguiente imagen:

image

Figura 3  Source

Notamos los componentes 1 y 3 ocupan el espacio que resta del container , para ello utiliza  weightx = 1 en los botones 1 y 3,.

También observamos que los botones están "pegados" unos con otros, no queda espacio entre si, como por ejemplo el boton 1 con el 3.  

Vamos a agregar un espacio entre los componentes,  utilizando la propiedad insets.

image 

Figura 3.1 Source

Vemos que entre los componentes hay espacio que los separa.  Como hicimos esto? con una sola línea de código:

c.insets = new Insets(5, 5, 5, 5);    // top, left, bottom, right

La propiedad insets es insertada  a los 4 botones.  El constructor recibe 4 parámetros, (top, left, bottom, right), que representan los pixeles a agregar al borde exterior del componente.  Podemos optar agregar espacio solamente entre el vertice izquierdo, entonces sólo deberíamos llenar con pixeles la parte que corresponde a left; por ejemplo c.insets = new Insets(0, 7, 0, 0).

Ahora supongamos que solo queremos agregar un espacio entre el boton 2 y 4, y que los demás componentes queden pegados.  Podemos agregar al boton 2, el insets (0 , 0, 5, 0) que sería espacio en la parte inferior; o agregar al boton 4 el insets (5 , 0, 0, 0)  para agregar espacio en la parte superior del boton.  También se pueden  combinar las dos opciones agregando cada uno de los insets a cada componente.

Anchor 

Bien, ahora que ya vimos el espacio entre componentes, vamos a ver la propiedad anchor.  Esta propiedad lo que hace es alinear el componente  dentro de su celda.  Las posiciones de alineamiento  que puede tomar el componente se especifica mediante GridBagConstrainst.alineacion, donde alineación puede tomar valores absolutos como

  • GridBagConstraints.NORTH
  • GridBagConstraints.SOUTH
  • GridBagConstraints.EAST
  • GridBagConstraints.WEST
  • GridBagConstraints.NORTHEAST
  • GridBagConstraints.NORTHWEST
  • GridBagConstraints.SOUTHEAST
  • GridBagConstraints.SOUTHWEST
  • GridBagConstraints.CENTER

y valores relativos PAGE_END,  LINE_START, etc.  Veamos un ejemplo, vamos a hacer que el boton 1 se desplaze hacia la izquierda ( GridBagConstraints.WEST).  La  figura quedaría asi:

image

Figura 3.2  Source

Note que la propiedad anchor sólo funciona si weightx o weighty  son inicializadas en un valor distinto de 0; esto se debe a que si poseen valor 0, la celda se ajusta al tamaño del componente y el mismo no se puede alinear.

Vamos a alinear el boton 2 al norte en su celda, para ello usamos GridBagConstraints.NORTH.  Bien, si usamos al insertar el boton 2, dicha propiedad, el boton 2 se quedará donde está.  Por que? porque no está aprovechando el espacio en vertical restante, para ello le indicamos que lo aproveche mediante weighty = 1. El resultado se ve en la figura 3.3.

image

Figura 3.3  Source

Para mas información visite How to use GridBagLayout.

 

Comentarios