Abajo est� el c�digo que t�picamente podremos ver en un contendor que use un GridBagLayout.
GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); JPanel pane = new JPanel(); pane.setLayout(gridbag); //For each component to be added to this container: //...Create the component... //...Set instance variables in the GridBagConstraints instance... gridbag.setConstraints(theComponent, c); pane.add(theComponent);
Como podr�as haber deducido del ejemplo anterior, se puede reutilizar el mismo ejemplar de GridBagConstraints para varios componentes, incluso si los componentes tienen distintas restricciones.
El GridBagLayout extrae los valores de las restricciones y no vuelve a utilizar el GridBagConstraints.
Sin embargo, se debe tener cuidado de resetar las variables de ejemplar del GridBagConstraints a sus valores por defecto cuando sea necesario.
Podemos seleccionar las siguientes varibles de ejemplar de GridBagConstraints.
- gridx, gridy
- Especifica la fila y la columna de la esquina superior izquierda del componente. La columna m�s a la izquierda tiene la direcci�n gridx=0, y la fila superior tiene la direcci�n gridy=0. Utiliza GridBagConstraints.RELATIVE (el valor por defecto) para especificar que el componente debe situarse a la derecha (para gridx) o debajo (para gridy) del componente que se a�adi� al contenedor inmediatamente antes. Recomendamos especificar los valores gridx y gridy para cada componente, esto tiende a resultar en una distribuci�n m�s predecible.
- gridwidth, gridheight
- Especifica el n�mero de columnas (para gridwidth) o filas (para gridheight) en el �rea de componente. Esta restricci�n especifica el n�mero de celdas utilizadas por el componente, no el n�mero de pixels. El valor por defecto es 1. Se utiliza GridBagConstraints.REMAINDER para especificar que el componente ser� el �ltimo de esta fila (para gridwidth) o columna (para gridheight). Se utiliza GridBagConstraints.RELATIVE para especificar que el componente es el siguiente al �ltimo de esta fila (para gridwidth) o columna (para gridheight).
Nota: GridBagLayout no permite que los componentes se expanda m�ltiples filas a menos que el componente est� en la columna m�s a la izquierda o especifiquemos valores positivo de gridx y gridy para componente.
- fill
- Utilizada cuando el �rea del pantalla del componentes es mayor que el tama�o requerido por �ste para determinar si se debe, y c�mo redimensionar el componente.
Los valores v�lidos son GridBagConstraints.NONE (por defecto), GridBagConstraints.HORIZONTAL (hace que el componente tenga suficiente anchura para llenar horizintalmente su �rea de dibujo, pero no cambia su altura), GridBagConstraints.VERTICAL (hace que el componente sea lo suficientemente alto para llenar verticalmente su �rea de dibujo, pero no cambia su anchura), y GridBagConstraints.BOTH (hace que el componente llene su �rea de dibujo por completo).
- ipadx, ipady
- Especifica el espacio interno: cu�nto se debe a�adir al tama�o m�nimo del componente. El valor por defecto es cero. La anchura del componente debe ser al menos su anchura m�nima m�s ipadx*2 pixels (ya que el espaciado se aplica a los dos lados del componente). De forma similar, la altura de un componente ser� al menos su altura m�nima m�s ipady*2 pixels.
- insets
- Especifica el espaciado externo del componente -- la cantidad m�nima de espacio entre los componentes y los bordes del �rea de dibujo. Es valor es especificado como un objeto Insets. Por defecto, ning�n componente tiene espaciado externo.
- anchor
- Utilizado cuando el componente es m�s peque�o que su �rea de dibujo para determinar d�nde (dentro del �rea) situar el componente. Los valores v�lidos (definidos como constantes en GridBagConstraints) son CENTER (por defecto), NORTH, NORTHEAST, EAST, SOUTHEAST, SOUTH, SOUTHWEST, WEST, y NORTHWEST.
- weightx,weighty
- Especificar el peso es un arte que puede tener un impacto importante en la apariencia de los componentes que controla un GridBagLayout. El peso es utiliza para determinar c�mo distribuir el espacio entre columnas (weightx) y filas (weighty); esto es importante para especificar el comportamiento durante el redimensionado.
A menos que se especifique un valor distinto de cero para weightx o weighty, todos los componentes se situar�n juntos en el centro de su contenendor. Esto es as� porque cuando el peso es 0,0 (el valor por defecto) el GidBagLayout pone todo el espacio extra entre las celdas y los bordes del contenedor.
Generalmente, los pesos son especificados con 0.0 y 1.0 como los extremos, con n�meros entre ellos si son necesarios. Los n�meros mayores indican que la fila o columna del componente deber�an obtener m�s espacio. Para cada columna, su peso est� relacionado con el mayor weightx especificado para un componente dentro de esa columna (donde cada componente que ocupa varias columnas es dividido de alguna forma entre el n�mero de columnas que ocupa).
Lo mismo ocurre con las filas para el mayor valor especificado en weighty. El espacio extra tiende a irese hacia la columna m�s a la derecha y hacia la fila m�s abajo.
La p�gina siguiente explica las oblicaciones en m�s detalle, explicando c�mo trabaja el programa del ejemplo.