11.11 

JList

495

Las líneas 34 a 46 son una llamada al método 

addItemListener

 de 

imagenesJComboBox

. El argumento 

para este método debe ser un objeto que 

sea un

ItemListener

 (es decir, cualquier objeto de una clase que imple-

mente a 

ItemListener

). Las líneas 35 a 45 son una expresión de creación de instancias de clase que declara una 

clase interna anónima y crea un objeto de esa clase. Después se pasa una referencia a ese objeto como argumento 
para

addItemListener

. La sintaxis 

ItemListener()

después de 

new

 empieza la declaración de una clase interna 

anónima que implementa a la interfaz 

ItemListener

. Esto es similar a empezar una declaración con

public class

 MiManejador 

implements

 ItemListener

Los paréntesis después de 

ItemListener

 indican una llamada al constructor predeterminado de la clase interna 

anónima.

La llave izquierda de apertura (

{

) en la línea 36 y la llave derecha de cierre (

}

) en la línea 45 delimitan el 

cuerpo de la clase interna anónima. Las líneas 38 a 44 declaran el método 

itemStateChanged

 de 

ItemListener

.

Cuando el usuario hace una selección de 

imagenesJComboBox

, este método establece el objeto 

Icon

 de 

etiqueta

.

El objeto 

Icon

 se selecciona del arreglo 

iconos

, determinando el índice del elemento seleccionado en el objeto 

JComboBox

 con el método 

getSelectedIndex

 en la línea 43. Observe que para cada elemento seleccionado de 

un

JComboBox

, primero se deselecciona otro elemento; por lo tanto, ocurren dos eventos tipo 

ItemEvent

 cuando 

se selecciona un elemento. Deseamos mostrar sólo el icono para el elemento que el usuario acaba de seleccionar. 
Por esta razón, la línea 41 determina si el método 

getStateChange

 de 

ItemEvent

 devuelve 

ItemEvent.SELEC-

TED

. De ser así, las líneas 42 y 43 establecen el icono de 

etiqueta

.

Observación de ingeniería de software 11.6

Al igual que cualquier otra clase, cuando una clase interna anónima implementa a una interfaz, la clase debe 
implementar todos los métodos en la interfaz.

La sintaxis que se muestra en las líneas 35 a 45 para crear un manejador de eventos con una clase interna 

anónima es similar al código que genera un entorno de desarrollo integrado (IDE) de Java. Por lo general, un 
IDE permite al programador diseñar una GUI en forma visual, y después el IDE genera código que implementa 
a la GUI. El programador sólo inserta instrucciones en los métodos manejadores de eventos que declaran cómo 
manejar cada evento.

11.11 

JList

Una 

listamuestra una serie de elementos, de la cual el usuario puede seleccionar uno o más (vea la salida de la 

fi gura 11.23). Las listas se crean con la clase 

JList

, que extiende directamente a la clase 

JComponent

. La clase 

JList

 soporta 

listas de selección simple

 (listas que permiten seleccionar solamente un elemento a la vez) y 

listas

de selección múltiple

 (listas que permiten seleccionar cualquier número de elementos a la vez). En esta sección 

hablaremos sobre las listas de selección simple.

La aplicación de las fi guras 11.23 y 11.24 crea un objeto 

JList

 que contiene los nombres de 13 colores. Al 

hacer clic en el nombre de un color en el objeto 

JList

, ocurre un evento 

ListSelectionEvent

 y la aplicación 

cambia el color de fondo de la ventana de aplicación al color seleccionado. La clase 

PruebaLista

 (fi gura 11.24) 

contiene el método 

main

 que ejecuta esta aplicación.

 1 

// Fig. 11.23: MarcoLista.java

2

// Selección de colores de un objeto JList.

3

import

 java.awt.FlowLayout;

 4 

import

 java.awt.Color;

 5 

import

 javax.swing.JFrame;

 6 

import

 javax.swing.JList;

 7 

import

 javax.swing.JScrollPane;

 8 

import

 javax.swing.event.ListSelectionListener;

 9 

import

 javax.swing.event.ListSelectionEvent;

 10 

import

 javax.swing.ListSelectionModel;

Figura 11.23

  |  Objeto 

JList

 que muestra una lista de colores. (Parte 1 de 2).

11_MAQ_CAP_11.indd495

4/19/081:26:09AM