486

Capítulo 11 Componentes de la GUI: parte 1

Archivo
Nuevo

Abrir...

Cerrar

Observación de apariencia visual 11.10

Al usar iconos de sustitución para los objetos 

JButton

, los usuarios reciben una retroalimentación visual que les 

indica que, al hacer clic en el ratón mientras el cursor está colocado encima del botón, ocurrirá una acción.

Los objetos 

JButton

, al igual que los objetos 

JTextField

, generan eventos 

ActionEvent

 que pueden ser 

procesados por cualquier objeto 

ActionListener

. En las líneas 33 a 35 se crea un objeto de la clase inter-

na

privateManejadorBoton

 y se registra como el manejador de eventos para cada objeto 

JButton

. La clase 

ManejadorBoton

 (líneas 39 a 47) declara a 

actionPerformed

 para mostrar un cuadro de diálogo de mensaje que 

contiene la etiqueta del botón que el usuario oprimió. Para un evento de 

JButton

, el método 

getActionCommand

de

ActionEvent

 devuelve la etiqueta del botón.

Cómo acceder a la referencia 

this

 en un objeto de una clase de nivel superior desde una clase interna

Cuando ejecute esta aplicación y haga clic en uno de sus botones, observe que el diálogo de mensaje que aparece 
está centrado sobre la ventana de la aplicación. Esto ocurre debido a que la llamada al método 

showMessage-

Dialog

 de 

JOptionPane

 (líneas 44 y 45 de la fi gura 11.15) utiliza a 

MarcoBoton.this

, en vez de 

null

 como el 

primer argumento. Cuando este argumento no es 

null

, representa lo que se denomina el componente de GUI 

padre del diálogo de mensaje (en este caso, la ventana de aplicación es el componente padre) y permite centrar el 
diálogo sobre ese componente, cuando se muestra el diálogo. 

MarcoBoton.this

 representa a la referencia 

this

del objeto de la clase 

MarcoBoton

 de nivel superior.

Observación de ingeniería de software 11.4

Cuando se utiliza en una clase interna, la palabra clave 

this

 se refi ere al objeto actual de la clase interna que se 

está manipulando. Un método de la clase interna puede utilizar la referencia 

this

 del objeto de la clase externa, si 

antepone a 

this

 el nombre de la clase externa y un punto, como en 

MarcoBoton.this

.

11.9 Botones que mantienen el estado

Los componentes de la GUI de Swing contienen tres tipos de 

botones de estado

:

JToggleButton

,

JCheckBox

y

JRadioButton

, los cuales tienen valores encendido/apagado o verdadero/falso. Las clases 

JCheckBox

 y 

JRa-

dioButton

 son subclases de 

JToggleButton

 (fi gura 11.14). Un objeto 

JRadioButton

 es distinto de un objeto 

JCheckBox

 en cuanto a que generalmente hay varios objetos 

JRadioButton

 que se agrupan, y son mutuamente 

exclusivos; sólo uno de los objetos 

JRadioButton

 en el grupo puede estar seleccionado en un momento dado, 

de igual forma que los botones en la radio de un automóvil. Primero veremos la clase 

JCheckBox

. Las siguientes 

dos subsecciones también demuestran que una clase interna puede acceder a los miembros de su clase de nivel 
superior.

11.9.1 

JCheckBox

La aplicación de las fi guras 11.17 y 11.18 utilizan dos objetos 

JCheckBox

 para seleccionar el estilo deseado de tipo 

de letra para el texto a mostrar en un objeto 

JTextField

. Un objeto 

JCheckBox

 aplica un estilo en negritas cuan-

do se selecciona, y el otro aplica un estilo en cursivas. Si ambos se seleccionan, el estilo del tipo de letra es negrita 
y cursiva. Cuando la aplicación se ejecuta por primera vez, ninguno de los objetos 

JCheckBox

 está activado (es 

decir, ambos son 

false

), por lo que el tipo de letra es simple. La clase 

PruebaCheckBox

 (fi gura 11.18) contiene 

el método 

main

 que ejecuta esta aplicación.

 1 

// Fig. 11.17: MarcoCasillaVerificacion.java

2

// Creación de botones JCheckBox.

 3 

import

 java.awt.FlowLayout;

 4 

import

 java.awt.Font;

 5 

import

 java.awt.event.ItemListener;

 6 

import

 java.awt.event.ItemEvent;

 7 

import

 javax.swing.JFrame;

 8 

import

 javax.swing.JTextField;

Figura 11.17

  |  Botones 

JCheckBox

 y eventos de los elementos. (Parte 1 de 2).

11_MAQ_CAP_11.indd486

4/19/081:26:04AM