## Cómo Utilizar la Clase List

La clase List proporciona un área desplegable que contiene ítems seleccionables (uno por línea). Generalmente, un usuario selecciona una opción pulsando sobre ella, e indica que una acción debe ocurrir cuando hace doble-click sobre ella o pulsa la tecla Return. Las Listas (Lists) pueden permitir múltiples selecciones o sólo una selección a la vez. Otros componentes que pérmiten al usuario elegir entre varias opciones son checkbox, choice, y menu.

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:

int countItems()
  Devuelve el número de opciones de la Lista.
String getItem(int)
  Devuelve la cadena mostrada por la opción del índice especificado.
void addItem(String, int)
  Añade la opción especificada en el índice especificado.
void replaceItem(String, int)
  Reemplaza la opción el índice especificado.
void clear(), void delItem(int), y void delItems(int, int)
  Borran una o más opciones de la lista. El método clear() vacía la lista. El método delItem() borra la opción especificada de la lista. El método delItems() borra las opciones que existan entre los índices especificados (ambos incluidos).
int getSelectedIndex()
  Devuelve el índice de la opción selecciona en la lista. Devuelve -1 si no se ha seleccionado ninguna opción o si se ha seleccionado más de una.
int[] getSelectedIndexes()
  Devuelve los índices de las opciones seleccionadas.
String getSelectedItem()
  Igual getSelectedIndex(), pero devuelve el string con el texto de la opción en lugar de su índice. Develve null si no se ha seleccionado ninguna opción o si se ha seleccionado más de una.
String[] getSelectedItems()
  Igual getSelectedIndexes(), pero devuelve los strings con el texto de las opciones seleccionadas en lugar de sus índices.
void select(int), void deselect(int)
  Seleccionan o deseleccionan la opción con el índice especificado.
boolean isSelected(int)
  Devuelve true si la opción con el índice especificado está seleccionada.
int getRows()
  Devuelve el número de línes visibles en la lista.
boolean allowsMultipleSelections(), boolean setMultipleSelections()
  Devuelve o cambia si la lista permite selecciones múltiples o no.
int getVisibleIndex(), void makeVisible(int),
  El método makeVisible() fuerza a que opción seleccionado sea visible. El método getVisibleIndex() obtiene el indice de la opción que se hizo visible la última vez con el método makeVisible().

Ozito