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