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