Este está en el grupo de componentes Complejos aunque realmente su uso es muy simple así como la forma de entenderlo....
Que es?
Este componente nos permite presentar una lista de selección donde podemos escoger uno o varios elementos...... este tipo de selección ya la habíamos visto mediante el uso del componente Atómico JComboBox, pero en ese para ver todos los elementos teníamos que desplegar el combo y solo podemos seleccionar de a una opción....Agregar Elementos...
Voy a mostrar 2 formas de agregar elementos a un JList, la primera mediante un arreglo y la segunda usando la clase DefaultListModel...Forma 1.
JList listaNombres;
String nombres[] = { "Cristian", "Julian", "Milena"};
listaNombres = new JList( nombres );
Forma 2.
JList listaNombres=new JList();
DefaultListModel modelo = new DefaultListModel();
modelo.addElement("Elemento1");
modelo.addElement("Elemento2");
modelo.addElement("Elemento3");
listaNombres.setModel(modelo);
El Ejemplo.En el ejemplo usaremos la Forma 2, tan solo presentaremos una ventana con 3 opciones principales, agregar, eliminar y borrar lista, de esta manera evidenciaremos el funcionamiento del JList....
Veamos el código principal asociado a nuestro JList, Inicialmente declaramos nuestra lista, nuestro modelo y un Scroll que contendrá la lista en caso de que se agreguen muchos elementos....
private JList listaNombres;//declaramos La Lista
private DefaultListModel modelo;//declaramos el Modelo
private JScrollPane scrollLista;
Luego instanciamos los componentes, vemos la linea ListSelectionModel.SINGLE_SELECTION, esto nos indica que nuestra lista tan solo permitirá la selección de un único elemento, si quisieramos seleccionar mas de un elemento utilizábamos ListSelectionModel.MULTIPLE_INTERVAL_SELECTION.........(esto lo veremos en un proximo ejemplo)....
//instanciamos la lista
listaNombres = new JList();
listaNombres.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
//instanciamos el modelo
modelo = new DefaultListModel();
//instanciamos el Scroll que tendra la lista
scrollLista = new JScrollPane();
scrollLista.setBounds(20, 120,220, 80);
scrollLista.setViewportView(listaNombres);
Posteriormente en los eventos de los botones definimos el llamado a los métodos que se encargarán de realizar la incersión de datos al modelo, la eliminación y el borrado, así como la actualización de un mensaje de estado cada vez que se ejecute una acción...
public void actionPerformed(ActionEvent evento) {
if (evento.getSource()==agregar)
{
agregarNombre();
mensaje.setText("Se agregó un nuevo elemento");
}
if (evento.getSource()==eliminar)
{
eliminarNombre(listaNombres.getSelectedIndex() );
}
if (evento.getSource()==borrar)
{
borrarLista();
mensaje.setText("Se borró toda la lista");
}
}
Por ultimo se tienen los métodos llamados en el paso anterior..... el llenado se hace mediante la forma 2..... para eliminar un elemento de la lista, como se muestra en el paso anterior, debemos enviar el elemento seleccionado mediante el método getSelectedIndex() que retorna la posición del elemento, contando el primero con un índice 0, este valor es enviado y se usa el método modelo.removeElementAt(indice), para eliminarlo................ para borrar toda la lista, tan solo es necesario borrar el modelo utilizando el método modelo.clear()....
private void agregarNombre() {
String nombre=campo.getText();
modelo.addElement(nombre);
listaNombres.setModel(modelo);
campo.setText("");
}
private void eliminarNombre(int indice) {
if (indice>=0) {
modelo.removeElementAt(indice);
mensaje.setText("Se eliminó un elemento en la posición "+indice);
}else{
JOptionPane.showMessageDialog(null, "Debe seleccionar un indice"
,"Error", JOptionPane.ERROR_MESSAGE);
mensaje.setText("NO se seleccionó ningún elemento");
}
}
private void borrarLista() {
modelo.clear();
}
Y Listo!!! De esa manera vemos rápidamente un ejemplo simple utilizando el componente JList, usamos sus métodos básicos para tener una aplicacion en funcionamiento y el proceso no presenta mayores complicaciones....
Descarga!!!
Les dejo el enlace de descarga por si lo quieren revisar ;)..... recuerden que es gratis, y nada cuesta opinar, compartir o agradecer :)
También te podría Interesar.
- Ejemplo JFileChooser
- Ejemplo JTree.
- Ejemplo JColorChooser
- Ejemplo Jtable
- Control de Versiones con Tortoise.
- Clases en Java
- Clases Abstractas
¿Hay algo que quieras anexar o comentar sobre esta entrada? no dudes en hacerlo.....y si te gustó...... te invito a compartir y Suscribirte ingresando al botón "Participar en este sitio" para darte cuenta de mas entradas como esta ;)