Un JList le presenta al usuario un grupo de �tems para elegir. Los �tems pueden ser cualquier Object. Normalmente son un String. Un lista puede tener muchos �tems, o podr�a crecer hasta tenerlos. C�mo la mayor�a de las listas se sit�an dentro de paneles desplazables, JList es una clase scroll-savvy.
Adem�s de las listas, los siguientes componentes Swing tambi�n presentan m�ltiples �tems seleccionables al usuario: check boxes, combo boxes,menus, radio buttons, y tables. S�los los checkbox, las tablas, y las listas permiten seleccionar varios �tems a la vez.
Aqu� podemos ver una imagen de una aplicaci�n que utiliza JList para mostrar los nombres de las im�genes a ver.

Intenta esto:
|
Abajo est� el c�digo de SplitPaneDemo.java que crea y configura la lista.
...where member variables are declared this Vector is initialized from a properties file... static Vector imageList; ...where the GUI is created... // Create the list of images and put it in a scroll pane JList listOfImages = new JList(imageList); listOfImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); listOfImages.setSelectedIndex(0); listOfImages.addListSelectionListener(this); JScrollPane listScrollPane = new JScrollPane(listOfImages);
El c�digo utiliza un objeto Vector para proporcionar una lista con los �tems iniciales. Tambi�n podemos inicializar una lista con un array o con un objeto ListModel.
En este ejemplo, el Vector contiene strings obtenidas desde un fichero de propiedades. Sin embargo, los valores de la lista pueden ser cualquier Object, en cuyo caso el m�todo toString de la clase Object proporciona el texto a mostrar. Para mostrar un �tem como una imagen u otro valor no-texto, debemos proporcionar una celta personalizada con setCellRenderer.
Por defecto, una lista permite que cualquier combinaci�n de �tems sea seleccionada a la vez. Podemos utilizar un valor por defecto diferente utilizando el m�todo setSelectionMode. Por ejemplo, SplitPaneDemo configura el modo de selecci�n a SINGLE_SELECTION (una constante definida por ListSelectionModel) para que s�lo pueda seleccionarse un �tem de la lista. La siguiente lista describe los tres modos de selecci�n disponibles.
Modo | Descripci�n | Ejemplo |
---|---|---|
SINGLE_SELECTION | S�lo un �tem de la lista puede ser seleccionado. Cuando el usuario selecciona un �tem, cualquier �tem anteriormente seleccionado se deselecciona primero. | � |
SINGLE_INTERVAL_SELECTION | Se pueden seleccionar varios �tems contiguos. Cuando el usuario empieza una nueva selecci�n, cualquier �tem anteriormente seleccionado se deselecciona primero. | � |
MULTIPLE_INTERVAL_SELECTION | El valor defecto. Se puede seleccionar cualquier combinaci�n de �tems. El usuario debe deseleccionar expl�citamente los �tems. | � |
No importa el modo de selecci�n que utiliza la lista, siempre dispara eventos "list selection" cuando cambia la selecci�n. Se pueden procesar esos eventos a�adiendo un Oyente de "list selection" a la lista con el m�todo addListSelectionListener.
Un oyente de 'list selection' debe implementar un m�todo : valueChanged. Aqu� podemos ver el m�todo valueChanged para el oyente de SplitPaneDemo.
public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting()) return; JList theList = (JList)e.getSource(); if (theList.isSelectionEmpty()) { picture.setIcon(null); } else { int index = theList.getSelectedIndex(); ImageIcon newImage = new ImageIcon("images/" + (String)imageList.elementAt(index)); picture.setIcon(newImage); picture.setPreferredSize(new Dimension(newImage.getIconWidth(), newImage.getIconHeight() )); picture.revalidate(); } }
Observa que el m�todo valueChanged s�lo actualiza la imagen si getValueIsAdjusting devuelve false. La mayor�a de los eventos 'list selection' pueden ser generados desde una simple acci�n del usuario como una pulsaci�n del rat�n. Este programa particular s�lo est� interesado en el resultado final de la acci�n del usuario.
�mo la lista esta en modo de selecci�n sencillo, este c�digo puede utilizar getSelectedIndex para obtener el �ndice s�lo del �ndice seleccionado.
JList proporciona otros m�todos para Seleccionar u Obtener la Selecci�n cuando el modo de selecci�n permite seleccionar m�s de un �tem. Por ejemplo, cambiemos el modo de selecci�n de una lista din�micamente, podemos ver Ejemplos de Manejos de Eventos 'List Selection'.
�El API List
Las siguientes tablas listan los m�todos y constructores m�s utilizados de JList. Otros m�todos �tiles est�n definidos por las clases JComponent y Component.
Muchas de las operaciones de una lista est�n manejadas por otros objetos. Por ejemplo, los �tems de la lista est�n manejados por un objeto ListModel, la selecci�n est� manejada por un objeto ListSelectionModel, y la mayor�a de los programas ponen una lista en un panel desplazable para menajar el desplazamiento. No tenemos que preocuparnos de la mayor parte de estos objetos auxiliares, porque JList los crea cuando son necesarios, y nosotros interactuamos con ellos implicitamente con los m�todos de conveniencia de JList.
C�mo se ha dicho, el API para utilizar Lists de divide en estas categor�as.
�Seleccionar �tems de la Lista
M�todo | Prop�sito |
---|---|
JList(ListModel)
JList(Object[]) JList(Vector) |
Crea una lista con los �tems especificados. El segundo y tercer constructores crean implicitamente un ListModel. |
void setModel(ListModel)
ListModel getModel() |
Selecciona u obtiene el modelo que contiene el contenido de la lista. Podemos modificar din�micamente el contenido de la lista llamado a los m�todos con el objeto devuelto por getModel. |
void setListData(Object[])
void setListData(Vector) |
Selecciona los �tems de la lista. Estos m�todos crean impl�citamente un ListModel. |
�Manejar la Selecci�n de una Lista
M�todo | Prop�sito |
---|---|
void addListSelectionListener(
ListSelectionListener) |
Registra para recibir notificaci�n de los cambios de selecci�n. |
void setSelectedIndex(int)
void setSelectedIndices(int[]) void setSelectedValue(Object, boolean) void setSelectedInterval(int, int) |
Configura la selecci�n actual como indicada. Utiliza el m�todo setSelectionMode para los rangos de selecciones aceptables. El argumento booleano especifica su la lista deber�a intentar desplazarse a s� misma para que el �tem seleccionado sea visible. |
int getSelectedIndex()
int getMinSelectionIndex() int getMaxSelectionIndex() int[] getSelectedIndices() Object getSelectedValue() Object[] getSelectedValues() |
Obtiene informaci�n sobre la selecci�n actual. |
void setSelectionMode(int)
int getSelectionMode() |
Selecciona u obtiene el modod de selecci�n. Los valores aceptables son.
SINGLE_SELECTION, SINGLE_INTERVAL_SELECTION, o MULTIPLE_INTERVAL_SELECTION. |
void clearSelection()
boolean isSelectionEmpty() |
Selecciona u obtiene si hay alg�n �tem seleccionado. |
boolean isSelectedIndex(int) | Determina si el �ndice espec�ficado est� seleccionado. |
�Trabajar con un ScrollPane
M�todo | Prop�sito |
---|---|
void ensureIndexIsVisible(int) | Desplaza para que el �ndice especificado sea visible dentro del recuadro de la lista. |
int getFirstVisibleIndex()
int getLastVisibleIndex() |
Obtiene el �ndice del primer o el �ltimo elemento visible de la lista. |
void setVisibleRowCount(int)
int getVisibleRowCount() |
Selecciona u obtiene c�antas filas de la lista son visibles. |