910
Capítulo 22 Componentes de la GUI: parte 2
rencias a contenedores
Box
con un esquema
BoxLayout
vertical, en el que los componentes de la GUI se ordenan
de arriba hacia abajo.
La instrucción
for
de las líneas 27 y 28 agrega tres objetos
JButton
a
horizontal1
. La instrucción
for
de
las líneas 31 a 35 agrega tres objetos
JButton
a
vertical1
. Antes de agregar cada botón, en la línea 33 se agrega
un
montante vertical
al contenedor, mediante el método estático
createVerticalStrut
de
Box
. Un montante
vertical es un componente de la GUI invisible, el cual tiene una altura fi ja en píxeles y se utiliza para garantizar
una cantidad fi ja de espacio entre los componentes de la GUI. El argumento
int
para el método
createVerti-
calStrut
determina la altura del montante, en píxeles. Cuando se cambia el tamaño del contenedor, la distancia
entre los componentes de la GUI que están separados por montantes no cambia. La clase
Box
también declara el
método
createHorizontalStrut
para esquemas
BoxLayout
horizontales.
La instrucción
for
de las líneas 38 a 42 agrega tres objetos
JButton
a
horizontal2
. Antes de agregar cada
botón, en la línea 40 se agrega
pegamento horizontal
al contenedor, mediante el método estático
createHori-
zontalGlue
de
Box
. El pegamento horizontal es un componente de la GUI invisible que puede usarse entre los
componentes de la GUI de tamaño fi jo para ocupar espacio adicional. Generalmente, el espacio adicional aparece
a la derecha del último componente de la GUI horizontal, o debajo del último componente de la GUI vertical,
en un esquema
BoxLayout
. El pegamento permite que se agregue espacio adicional entre los componentes de
la GUI. Cuando se cambia el tamaño del contenedor, los componentes separados por pegamento conservan el
mismo tamaño, pero el pegamento se estira o se contrae para ocupar el espacio entre los demás componentes. La
clase
Box
también declara el método
createVerticalGlue
para esquemas
BoxLayout
verticales.
La instrucción
for
de las líneas 45 a 49 agrega tres objetos
JButton
a
vertical2
. Antes de agregar cada
botón, en la línea 47 se agrega un
área rígida
al contenedor, mediante el método
static
createRigidArea
de
Box
. Un área rígida es un componente de la GUI invisible, el cual siempre tiene una anchura y altura fi jas, en
píxeles. El argumento para el método
createRigidArea
es un objeto
Dimension
que especifi ca la anchura y la
altura del área rígida.
En las líneas 52 y 53 se crea un objeto
JPanel
y se establece su esquema en
BoxLayout
de la manera con-
vencional, utilizando el método
setLayout
de
Container
. El constructor de
BoxLayout
recibe una referencia
al contenedor para el que está controlando el esquema, y una constante que indica si el esquema es horizontal
(
BoxLayout.X_AXIS
) o vertical (
BoxLayout.Y_AXIS
).
La instrucción
for
de las líneas 55 a 59 agrega tres objetos
JButton
al objeto
panel
. Antes de agregar cada
botón, en la línea 57 se agrega un componente pegamentoal contenedor, mediante el método
static
create-
Glue
de
Box
. Este componente se expande o se contrae con base en el tamaño del objeto
Box
.
En las líneas 62 y 63 se crea un objeto
JTabbedPane
para mostrar los cinco contenedores en este programa.
El argumento
JTabbedPane.TOP
que se envía al constructor indica que las fi chas deben aparecer en la parte supe-
rior del objeto
JTabbedPane
. El argumento
JTabbedPane.SCROLL_TAB_LAYOUT
especifi ca que las fi chas deben
desplazarse si hay demasiadas como para que puedan ajustarse en una sola línea.
60
61
// crea un objeto JTabbedPane
62
JTabbedPane fichas =
new
JTabbedPane(
63
JTabbedPane.TOP
,
JTabbedPane.SCROLL_TAB_LAYOUT
);
64
65
// coloca cada contenedor en el panel con fichas
66
fichas.addTab(
"Cuadro horizontal"
, horizontal1 );
67
fichas.addTab(
"Cuadro vertical con montantes"
, vertical1 );
68
fichas.addTab(
"Cuadro horizontal con pegamento"
, horizontal2 );
69
fichas.addTab(
"Cuadro vertical con areas rigidas"
, vertical2 );
70
fichas.addTab(
"Cuadro vertical con pegamento"
, panel );
71
72
add( fichas );
// coloca panel con fichas en el marco
73
}
// fin del constructor de MarcoBoxLayout
74
}
// fin de la clase MarcoBoxLayout
Figura 22.16
| Administrador de esquemas
BoxLayout
. (Parte 2 de 2).
22_MAQ_CAP_22_DEITEL.indd910
4/19/081:17:17AM