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....
JList listaNombres; String nombres[] = { "Cristian", "Julian", "Milena"}; 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.
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....
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)....
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...
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()....
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!!!
También te podría Interesar.
¿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 ;)
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 ;).....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 ;)
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
ResponderEliminarAlguna sugerencia de como realizar la actualización de datos sin que tire esa excepción???
Hola, que pena la demora, debes encontrar una manera de mantener actualizada la lista con la que trabajas, antes de usarla deberias poder consultar los usuarios para evitar que te salgas del indice que es.....talvez podrias usar el patron observer, depronto te puede servir....
Eliminarhttp://codejavu.blogspot.com/2013/06/ejemplo-patron-observer.html
Muy bueno, me sirvio bastante, gracias :D
ResponderEliminarpene
Eliminarexcelente aportación
ResponderEliminarGracias por el aporte y tu tiempo!!
ResponderEliminarEs con mucho gusto!!!
EliminarMuy bueno, pero el enlace al código completo ya no funciona, si pudieras ponerlo de nuevo
ResponderEliminarHola, revisa nuevamente y me cuentas porfa
EliminarMe sirvió muchisimo. Muchas gracias! Además por fin pude entender lo del scroll como yapa a lo que buscaba.
ResponderEliminarAmigo, no permite descargarlo, ahí alguna otra forma de que me los pases
ResponderEliminarHola, revisa nuevamente y me cuentas porfa
EliminarMuchas gracias amigo me Sirvió bastante e solucionado muchos problemas y que Dios te vendiga y te de mas conocimiento para ayudar a otras personas que lo nesecites
ResponderEliminarme sirvió el JOptionPane.showMessageDialog
Con gusto, me alegra que te sirviera!!!!
EliminarExcelente muy util! gracias
ResponderEliminari si quiero solo ingresar 10 datos como hago
ResponderEliminarGracias por el aporte me ayudo mucho :D
ResponderEliminarEsta pagina es genial , tu siempre haciendo buenos aportes a la enseñana de java !!
ResponderEliminarGracias!!!
Eliminarahh esta bueno, ahora también he investigado y a mi lista le cambie el color y el fondo.
ResponderEliminarFelicidades, la banda pa cuando?
Eliminarno se si tenes algun enlace para alguien que esta empesando en java...y quisiera saber sobre listas y listas con modulos pero solo en consola
ResponderEliminarte agradeceria mucho....
perdon es listas y listas con metodos
EliminarYo lo hago en visual, y cuando pego el código de la forma 1 en el método ActionPerformed de mi botón:
ResponderEliminarJList jList1;
String nombres[] = {"Cristian", "Julian", "Milena"};
jList1 = new JList(nombres);
Y ejecuto no pasa nada, creo que solo agrega pero no muestra, ¿qué hago?
como valido que si ingreso exactamente el mismo nombre me mande un mensaje diciendo que ya existe... Gracias por la atención
ResponderEliminarHola, puedes usar una estructura HashSet que no permite almacenar duplicados, o recorrer una lista con un for e ir comparando....
Eliminarhay alguien por aqui :( URG :( quiero VALIDAR LISTASSS :(
ResponderEliminarno puedo descargar el codigo de mega :( y copiarlo no me funcionaaaa .. que dificil esta vida XD
ResponderEliminarme gustaria saber como combinar dos jlist una donde me muestre un listado de secciones y que a la hora de seleccionar una en esa en el otro jlist me muestre los items que contiene esa seccion seleccinada en el primer jlist
ResponderEliminarcampo y mensaje de donde salen?
ResponderEliminarme recomendaron codejavu y aquí estoy.... Problema resuelto...Gracias Ingeniero...
ResponderEliminarTu tutorial cambio mi vida , mi vida no tenia sentido hasta que llegue a este punto en el cual me detuve a leer tu blog . Eso me hizo terminar la universidad , tener casa propia , auto y mujerzuelas . :D gracias por tu aporte.
ResponderEliminargracias los mejores aportes
ResponderEliminarComo devuelvo todos los objetos almacenados en JList? ayuda seria con un get pero cual
ResponderEliminar