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