Sei sulla pagina 1di 4

Ejemplo JList

Ya en la recta Final de los componentes Java Swing, continuamos


con un nuevo ejemplo, en esta ocasión es el turno del JList....

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.

Para agregar elementos usando un arreglo es muy simple, tan solo


tenemos que declarar nuestro arreglo y agregarselo al constructor del
objeto JList con el que estemos trabajando..... esta forma es muy
usada cuando traemos datos directamente de una BD y tenemos que
mostrarla en pantalla....

1 JList listaNombres;
2 String nombres[] = { "Cristian", "Julian", "Milena"};
3 listaNombres = new JList( nombres );

Forma 2.

La segunda forma también es muy simple, tenemos que declarar un


objeto de tipo DefaultListModel y por medio del
método addElement(elemento), vamos agregando elementos a
nuestro modelo, posteriormente dicho modelo se agrega al JList con el
que trabajemos...... esta forma es muy usada cuando tenemos que
agregar y mostrar directamente los datos ingresados en pantalla.

1 JList listaNombres=new JList();


2 DefaultListModel modelo = new DefaultListModel();
3 modelo.addElement("Elemento1");
4 modelo.addElement("Elemento2");
5 modelo.addElement("Elemento3");
6 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....

1 private JList listaNombres;//declaramos La Lista


2 private DefaultListModel modelo;//declaramos el Modelo
3 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)....

1 //instanciamos la lista
2 listaNombres = new JList();
3 listaNombres.setSelectionMode(ListSelectionModel.SINGLE_SELECTION );
4
5 //instanciamos el modelo
6 modelo = new DefaultListModel();
7
8 //instanciamos el Scroll que tendra la lista
9 scrollLista = new JScrollPane();
10 scrollLista.setBounds(20, 120,220, 80);
11 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...

1 public void actionPerformed(ActionEvent evento) {


2 if (evento.getSource()==agregar)
3 {
4 agregarNombre();
5 mensaje.setText("Se agregó un nuevo elemento");
6 }
7 if (evento.getSource()==eliminar)
8 {
9 eliminarNombre(listaNombres.getSelectedIndex() );
10 }
11 if (evento.getSource()==borrar)
12 {
13 borrarLista();
14 mensaje.setText("Se borró toda la lista");
15 }
16 }

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()....

1 private void agregarNombre() {


2 String nombre=campo.getText();
3 modelo.addElement(nombre);
4 listaNombres.setModel(modelo);
5 campo.setText("");
6 }
7
8 private void eliminarNombre(int indice) {
9 if (indice>=0) {
10 modelo.removeElementAt(indice);
11 mensaje.setText("Se eliminó un elemento en la posición "+indice);
12 }else{
13 JOptionPane.showMessageDialog(null, "Debe seleccionar un indice"
14 ,"Error", JOptionPane.ERROR_MESSAGE);
15
16 mensaje.setText("NO se seleccionó ningún elemento");
17 }
18 }
19
20 private void borrarLista() {
21 modelo.clear();
22 }

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 ;).....si usas NetBeans te
interesará esta entrada con un vídeo paso a paso de como abrirlo en
el.... 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 ;)

Publicado por Cristian Henao

Etiquetas: Java Swing, JList

31 comentarios:

Nahuel Alamo 5 de diciembre de 2013, 20:23


Hola, yo estoy realizando una aplicación, en la que ingreso clientes a un supermercado y a sus
cajas, por lo que es bastante dinámico el manejo de los jList y lo actualizo en un determinado
tiempo, el tema es que debes en cuando me salta el IndexOfBoundException, se que es
porque seguro que cuando quiero leer los clientes que estan comprando, justo se van a la caja
o alguna cosa, el tema es la sincronización para que no me tire ese error
Alguna sugerencia de como realizar la actualización de datos sin que tire esa excepción???

Potrebbero piacerti anche