Abajo tienes un applet que muestra dos listas, junto con un área de texto que muestra información sobre los eventos. La lista superior (que son números en español) permite múltiples selecciones. La inferior (que son numeros italianos) sólo permite una selección. Observa que el primer ítem de cada lista tiene índice 0.
Abajo tienes el código que crea las listas y maneja sus eventos. (Aquí tienes el programa completo.) Observa que el dato e.arg para los enventos Action (que es pasado dentro del método action() como su segundo argumento) es el nombre del ítem activado, similar a los argumentos para los eventos Action de otros componentes como los botones e incluso los menús. Sin embargo, el dato e.arg para los eventos que no son Action de la lista es el índice del ítem seleccionado.
...//Donde se declaren las variables de ejemplar:
TextArea output;
List spanish, italian;
...//Donde ocurra la inicialización:
//Primero construye la lista que permite seleciones múltiples.
spanish = new List(4, true); //el número 4 es visible al inicializar
spanish.addItem("uno");
spanish.addItem("dos");
spanish.addItem("tres");
spanish.addItem("cuatro");
spanish.addItem("cinco");
spanish.addItem("seis");
spanish.addItem("siete");
//Construye la segunda lista, que permite sólo una selección a la vez.
italian = new List(); //Por defecto ninguno es visible, sólo uno seleccionable
italian.addItem("uno");
italian.addItem("due");
italian.addItem("tre");
italian.addItem("quattro");
italian.addItem("cinque");
italian.addItem("sei");
italian.addItem("sette");
. . .
public boolean action(Event e, Object arg) {
if (e.target instanceof List) {
String language = (e.target == spanish) ?
"Spanish" : "Italian";
output.appendText("Action event occurred on \""
+ (String)arg + "\" in "
+ language + ".\n");
}
return true;
}
public boolean handleEvent(Event e) {
if (e.target instanceof List) {
List list = (List)(e.target);
String language = (list == spanish) ?
"Spanish" : "Italian";
switch (e.id) {
case Event.LIST_SELECT:
int sIndex = ((Integer)e.arg).intValue();
output.appendText("Select event occurred on item #"
+ sIndex + " (\""
+ list.getItem(sIndex) + "\") in "
+ language + ".\n");
break;
case Event.LIST_DESELECT:
int dIndex = ((Integer)e.arg).intValue();
output.appendText("Deselect event occurred on item #"
+ dIndex + " (\""
+ list.getItem(dIndex) + "\") in "
+ language + ".\n");
}
}
return super.handleEvent(e);
}
Junto con los dos constructores y los métodos addItem() y getItem() mostrados arriba, la clase List proporciona los siguientes métodos: