492

Capítulo 11 Componentes de la GUI: parte 1

Los objetos 

JRadioButton

, al igual que los objetos 

JCheckbox

, generan eventos tipo 

ItemEvent

 cuando se 

hace clic sobre ellos. En las líneas 59 a 66 se crean cuatro instancias de la clase interna 

ManejadorBotonOpcion

(declarada en las líneas 70 a 84). En este ejemplo, cada objeto componente de escucha de eventos se registra para 
manejar el evento 

ItemEvent

 que se genera cuando el usuario hace clic en cualquiera de los objetos 

JRadioBu-

tton

. Observe que cada objeto 

ManejadorBotonOpcion

 se inicializa con un objeto 

Font

 específi co (creado en 

las líneas 52 a 55).

La clase 

ManejadorBotonOpcion

 (línea 70 a 84) implementa la interfaz 

ItemListener

 para poder manejar 

los eventos 

ItemEvent

 generados por los objetos 

JRadioButton

. El constructor almacena el objeto 

Font

que

recibe como un argumento en la variable de instancia 

tipoLetra

(declarada en la línea 72) del objeto compo-

nente de escucha de eventos. Cuando el usuario hace clic en un objeto 

JRadioButton

,

grupoOpciones

 desactiva 

el objeto 

JRadioButton

 previamente seleccionado y el método 

itemStateChanged

 (líneas 80 a 83) establece el 

tipo de letra en el objeto 

JTextField

 al tipo de letra almacenado en el objeto componente de escucha de eventos 

correspondiente al objeto 

JRadioButton

. Observe que la línea 82 de la clase interna 

ManejadorBotonesOpcion

utiliza la variable de instancia 

campoTexto

 de la clase de nivel superior para establecer el tipo de letra.

11.10 

JComboBox

 y el uso de una clase interna anónima 

para el manejo de eventos

Un cuadro combinado (algunas veces conocido como 

lista desplegable

) proporciona una lista de elementos 

(fi gura 11.22), de la cual el usuario puede seleccionar solamente uno. Los cuadros combinados se implementan 
con la clase 

JComboBox

, la cual extiende a la clase 

JComponent

. Los objetos 

JComboBox

 generan eventos 

Item-

Event

, al igual que los objetos 

JCheckBox

 y 

JRadioButton

. Este ejemplo también demuestra una forma especial 

de clase interna, que se utiliza con frecuencia en el manejo de eventos.

La aplicación de las fi guras 11.21 y 11.22 utiliza un objeto 

JComboBox

 para proporcionar una lista de cua-

tro nombres de archivos de imágenes, de los cuales el usuario puede seleccionar una imagen para mostrarla en 
pantalla. Cuando el usuario selecciona un nombre, la aplicación muestra la imagen correspondiente como un 
objeto

Icon

 en un objeto 

JLabel

. La clase 

PruebaCuadroCombinado

(fi gura 11.22) contiene el método 

main

que ejecuta esta aplicación. Las capturas de pantalla para esta aplicación muestran la lista 

JComboBox

 después de 

hacer una selección, para ilustrar cuál nombre de archivo de imagen fue seleccionado.

Figura 11.21

  |  Objeto 

JComboBox

 que muestra una lista de nombres de imágenes. (Parte 1 de 2).

 1 

// Fig. 11.21: MarcoCuadroCombinado.java

 2 

// Uso de un objeto JComboBox para seleccionar una imagen a mostrar.

 3 

import

 java.awt.FlowLayout;

 4 

import

 java.awt.event.ItemListener;

 5 

import

 java.awt.event.ItemEvent;

 6 

import

 javax.swing.JFrame;

 7 

import

 javax.swing.JLabel;

 8 

import

 javax.swing.JComboBox;

 9 

import

 javax.swing.Icon;

 10 

import

 javax.swing.ImageIcon;

 11
 12 

public class

 MarcoCuadroCombinado 

extends

 JFrame 

 13 

{

 14  

private

 JComboBox imagenesJComboBox; 

// cuadro combinado con los nombres de los 

   iconos

 15  

private

 JLabel etiqueta;

 // etiqueta para mostrar el icono seleccionado

 16 
 17  

private

 String nombres[] = 

 18  

 

{

“insecto1.gif”

,

“insecto2.gif”

,

“insectviaje.gif”

,

“insectanim.gif”

 };

 19  

private

 Icon iconos[] = { 

 20  

 

new

 ImageIcon( getClass().getResource( nombres[ 

0

 ] ) ),

 21  

 

new

 ImageIcon( getClass().getResource( nombres[ 

1

 ] ) ), 

 22  

 

new

 ImageIcon( getClass().getResource( nombres[ 

2

 ] ) ),

 23  

 

new

 ImageIcon( getClass().getResource( nombres[ 

3

] ) ) };

11_MAQ_CAP_11.indd492

4/19/081:26:07AM