Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

JList

 

Archivos necesarios:

El JList nos permite crear una lista para agregar a nuestras aplicaciones. A diferencia del JComboBox que puede crecer muy fácilmente, el JList es un poco más difícil de manejar pero nos permite hacer cosas más interesantes que el JComboBox. También veremos cómo utilizar algunas otras clases que nos van a permitir manejar un JList de una manera más eficiente por ejemplo para permitir que crezca de manera dinámica. Podemos utilizar listas para mostrar a los jugadores en un juego de mesa o también podemos utilizarla para mostrar una lista de contactos.

La clase que incluye este trial es un programa que únicamente incluye un JList con los nombres de los empleados de una empresa. El programa nos permite contratar más empleados y despedirlos según sea necesario.

Main.java
Main.java

 

¿Cómo utilizar un JList?

Constructor Construir un JList es muy sencillo si no queremos que sea dinámico, es decir: si queremos que el usuario no pueda agregar más items. Para hacerlo basta con declarar un arreglo de String y pasarlo como parámetro al constructor del JList.
Para hacer que el JList tenga una barra de desplazamiento es necesario utilizar una clase auxiliar llamada JScrollPane. Esta clase se va a detallar en algún trial más adelante, pero por el momento se debe de construir como se ve en la foto. JScrollPane

Es importante notar que el JScrollPane es el que se añade a la forma y no la lista en si. Esto es porque el JScollPane contiene a la lista.

valueChanged()

Para escuchar eventos en una lista (por ejemplo para saber cuando se seleccionó un elemento) es necesario importar un nuevo tipo de escuchador de eventos. Primero que nada tenemos que importar la librería: javax.swing.event.* después la clase tiene que implementar ListSelectionListener y por último tenemos que hacer un método valueChanged() que recibe un objeto ListSelectionEvent.

Dentro de este método podemos utilizar la variable ListSelectionEvent para saber cuál fue el JList que mandó llamar el método mediante el método getSource() que es igual que el que habíamos utilizado hasta ahora.

 

Un paso más allá

DefaultListModel Una parte importante de las listas es el poder agregar y eliminar registros. Para hacer esto necesitamos crear un objeto llamado DefaultListModel e iniciar el JList con este objeto en vez de con el arreglo de String como habíamos visto en la primera parte. Como podemos ver aqui podemos agregar elementos al DefaultListModel utilizando el método addElement() que recibe un String con el elemento a añadir. Una vez que ya tengamos el DefaultListModel con todos los elementos que queramos es hora de crear la lista con el constructor que recibe el DefaultListModel. Recuerda que la variable listModel que estamos utilizando en el código es un objeto tipo DefaultListModel.
Una vez que ya creamos la lista podemos utilizar nuestro DefaultListModel para eliminar los elementos que queramos, si sabemos el índice en que lugar fueron agregados (que es la misma posición en la que aparecen en el JList) con el método removeElementAt() que recibe únicamente un número que es el índice a borrar. También hay un método del JList que nos permite saber qué elemento está seleccionado. El método getSelectedIndex() nos devuelve el índice del elemento que esté seleccionado en ese momento. Eventos

Entonces, para poder borrar un elemento de un JList podemos utilizar juntos el método para borrar el registro en un índice y el método que nos devuelve el índice que está actualmente seleccioando, con lo que podemos borrar el elemento que seleccionó el usuario. Si nuestro JList permite elegir más de un elemento entonces el método getSelectedIndex() no funciona, para leer un poco más acerca de cómo manejar listas donde se puedan manejar multiples selecciones consulten la clase Main.java que se les da al principio.

Guardar También es importante saber cómo guardar los datos de un DefaultListModel a un archivo. También hay un método que nos devuelve que tantos elementos se han agregado al DefaultListModel llamado getSize(), este método lo podemos utilizar para hacer un for que guarde desde 0 hasta el tamaño todos los registros que encuentre, es más sencillo manejar este tipo de guardado en archivos de texto por lo que les recomiendo que lo hagan así.

RegresarRegresar

 
Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta