ventana padre especifi cada. En este ejemplo, el programa especifi ca la ventana padre con
PruebaMenu.this
; la
referencia
this
del objeto
PruebaMenu
. Al utilizar la referencia
this
en una clase interna, si se especifi ca la pala-
bra
this
por sí sola, se hace referencia al objeto de la clase interna. Para hacer referencia a la referencia
this
del
objeto de la clase externa, debe califi car a
this
con el nombre de la clase externa y un punto (
.
).
Los cuadros de diálogo generalmente son modales. Un
cuadro de diálogo modal
no permite el acceso a
ninguna de las otras ventanas en la aplicación, sino hasta que se cierre. Los cuadros de diálogo que se muestran
con la clase
JOptionPane
son cuadros de diálogo modales. La clase
JDialog
puede usarse para crear sus propios
cuadros de diálogo modales o no modales.
En las líneas 59 a 72 se crea el elemento de menú
elementoSalir
, se establece su nemónico en
S
, se agrega
a
menuArchivo
y se registra un objeto
ActionListener
que termina la aplicación cuando el usuario selecciona
elementoSalir
.
En las líneas 74 a 76 se crea el objeto
JMenuBar
, se adjunta a la ventana de aplicación mediante el método
setJMenuBar
de
JFrame
y se utiliza el método
add
de
JMenuBar
para adjuntar el
menuArchivo
a la barra de
menús
JMenuBar
.
Error común de programación 22.3
Si olvida establecer la barra de menús mediante el método
setJMenuBar
de
JFrame
, la barra de menús no se mos-
trará en el objeto
JFrame
.
Archivo
Nuevo
Abrir...
Cerrar
Observación de apariencia visual 22.5
Los menús generalmente aparecen de izquierda a derecha, en el orden en el que se agregan a un objeto
JMenuBar
.
En las líneas 78 a 79 se crea el menú llamado
menuFormato
y se establece su nemónico en
F
.
En las líneas 84 y 85 se crea el menú llamado
menuColor
(éste será un submenú en el menú
Formato
)
y se establece su nemónico en
C
. En la línea 88 se crea el arreglo
JRadioButtonMenuItem
llamado
elementos-
Colores
, el cual hace referencia a los elementos de menú de
menuColor
. En la línea 89 se crea el objeto
ButtonGroup
llamado
grupoColores
, el cual asegura que sólo se seleccione uno de los elementos de menú del submenú
Color
en un momento dado. En la línea 90 se crea una instancia de la clase interna
ManejadorElementos
(declarada en
las líneas 154 a 181) para responder a las selecciones del submenú
Color
y del submenú
Fuente
(que describiremos
en breve). En la instrucción
for
de las líneas 93 a 100 se crea a cada uno de los objetos
JRadioButtonMenuItem
en
el arreglo
elementosColor
, se agrega cada uno de los elementos de menú a
menuColor
y a
grupoColores
, y se
registra el objeto
ActionListener
para cada elemento de menú.
En la línea 102 se utiliza el método
setSelected
de
AbstractButton
para seleccionar el primer elemento
en el arreglo
elementosColor
. En la línea 104 se agrega
menuColor
como un submenú de
menuFormato
. En la
línea 105 se invoca al método
addSeparator
de
JMenu
para agregar una línea
separadora
horizontalal menú.
Archivo
Nuevo
Abrir...
Cerrar
Observación de apariencia visual 22.6
Un submenú se crea agregando a un menú como elemento de otro menú. Cuando el ratón se coloca sobre un submenú
(o cuando se oprime el nemónico de ese submenú), éste se expande para mostrar sus elementos de menú.
Archivo
Nuevo
Abrir...
Cerrar
Observación de apariencia visual 22.7
Pueden agregarse separadores a un menú para agrupar los elementos de menú en forma lógica.
Archivo
Nuevo
Abrir...
Cerrar
Observación de apariencia visual 22.8
Puede agregarse cualquier componente de la GUI ligero (es decir, un componente de cualquier subclase de la clase
JComponent
) a un objeto
JMenu
o
JMenuBar
.
En las líneas 108 a 126 se crean el submenú
Fuente
y varios objetos
JRadioButtonMenuItem
, y se selecciona
el primer elemento del arreglo
JRadioButtonMenuItem
llamado
fuentes
. En la línea 129 se crea un arreglo
JCheckBoxMenuItem
para representar a los elementos de menú que especifi can los estilos negrita y cursiva para
las fuentes. En la línea 130 se crea una instancia de la clase interna
ManejadorEstilos
(declarada en las líneas
184 a 203) para responder a los eventos de
JCheckBoxMenuItem
. La instrucción
for
de las líneas 133 a 139 crea
a cada objeto
JCheckBoxMenuItem
, agrega cada uno de los elementos de menú a
menuFuente
y registra el objeto
22.4 Uso de menús con marcos
895
22_MAQ_CAP_22_DEITEL.indd895
4/19/081:17:08AM