Component

, y a la variable 

gridy

 se le asigna la fi la en la que se colocará el objeto 

Component

. En las líneas 74 y 75 

se establecen las variables de 

GridBagConstraints

 llamadas 

gridwidth

 y 

gridheight

. La variable 

gridwidth

especifi ca el número de columnas que abarcará el objeto 

Component

 en la cuadrícula, y la variable 

gridheight

 es-

pecifi ca el número de fi las que abarcará el objeto 

Component

 en la cuadrícula. En la línea 76 se establecen los

valores del objeto 

GridBagConstraints

 para un componente en el esquema 

GridBagLayout

. El método 

set-

Constraints

 de la clase 

GridBagLayout

 recibe un argumento 

Component

 y un argumento 

GridBagConstra-

ints

. En la línea 77 se agrega el componente al objeto 

JFrame

.

Cuando ejecute esta aplicación, pruebe a cambiar el tamaño de la ventana para ver cómo las restricciones para 

cada componente de la GUI afectan su posición y tamaño en la ventana.

Las constantes 

RELATIVE

 y 

REMAINDER

 de 

GridBagConstraints

Hay una variación de 

GridBagLayout

 que no utiliza a las variables 

gridx

 y 

gridy

. En vez de estas variables, se 

utilizan las constantes 

RELATIVE

y

REMAINDER

 de 

GridBagConstraints

.

RELATIVE

 especifi ca que el penúltimo 

componente de cierta fi la deberá colocarse a la derecha del componente anterior en esa fi la. 

REMAINDER

 especifi ca 

que un componente es el último en una fi la. Cualquier componente que no sea el penúltimo o el último en una 
fi la, deberá especifi car valores para las variables 

gridwidth

 y 

gridheight

 de 

GridbagConstraints

. La apli-

cación de las fi guras 22.23 y 22.24 ordena los componentes de un esquema 

Grid-BagLayout

, utilizando estas 

constantes.

En las líneas 21 y 22 se crea un objeto 

GridBagLayout

 y se utiliza para establecer el administrador de esque-

mas del objeto 

JFrame

. Los componentes que se colocan en el esquema 

GridBagLayout

 se crean en las líneas 27 

a 38; son un objeto 

JComboBox

, un objeto 

JTextField

, un objeto 

JList

 y cinco objetos 

JButton

.

El objeto 

JTextField

 se agrega primero (líneas 41 a 45). Los valores de 

weightx

 y 

weighty

 se establecen 

en 1. La variable 

fill

 se establece en 

BOTH

. En la línea 44 se especifi ca que el objeto 

JTextField

es el último 

componente de la línea. El objeto 

JTextField

 se agrega al panel de contenido mediante una llamada a nuestro 

método utilitario 

agregarComponente

 (declarado en las líneas 79 a 83). El método 

agregarComponente

 recibe 

un argumento 

Component

 y utiliza el método 

setConstraints

 de 

GridBagLayout

 para establecer las restriccio-

nes de este objeto 

Component

. El método 

add

 adjunta el componente al panel de contenido.

 1 

// Fig. 22.23: MarcoGridBag2.java

 2 

// Demostración de las constantes de GridBagLayout.

 3 

import

 java.awt.GridBagLayout;

 4 

import

 java.awt.GridBagConstraints;

 5 

import

 java.awt.Component;

 6 

import

 javax.swing.JFrame;

 7 

import

 javax.swing.JComboBox;

 8 

import

 javax.swing.JTextField;

 9 

import

 javax.swing.JList;

 10 

import

 javax.swing.JButton;

 11
 12 

public class

 MarcoGridBag2 

extends

 JFrame 

 13 

{

 14  

private

 GridBagLayout esquema;

 // esquema de este marco

 15  

private

 GridBagConstraints restricciones; 

// restricciones de este esquema

 16 
 17  

// establece la GUI

 18  

public

 MarcoGridBag2()

 19  

{

 20  

 

super

(

 "GridBagLayout"

 );

 21  

 

esquema = 

new

 GridBagLayout();

 22  

 

setLayout( esquema ); 

// establece el esquema del marco 

 23  

 

restricciones = 

new

 GridBagConstraints(); 

// instancia las restricciones

 24 
 25  

 

// crea los componentes de la GUI

 26  

 

String metales[] = { 

"Cobre"

,

"Aluminio"

,

"Plata"

 };

Figura 22.23

  |  Las constantes 

RELATIVE

y

REMAINDER

 de 

GridBagConstraints

. (Parte 1 de 2).

22.9 Administradores de esquemas: 

BoxLayout

 y 

GridBagLayout

917

22_MAQ_CAP_22_DEITEL.indd917

4/19/081:17:21AM