Un JList nos permite almacenar objetos en una lista y mostrarlos gráficamente en una serie vertical en el cual el usuario puede desplazarse usando un scroll para buscar un elemento, sin embargo, para optimizar la experiencia del usuario, es conveniente implementar un buscador dinámico que nos permita ubicar un elemento de la lista sin tanto esfuerzo. Y es de lo que se trata este post, algo sencillo de hacer.
Creamos un JFrame y en el agregamos una caja de texto y un jList como se ve en la siguiente imagen:
A continuación ingresamos a modo código del JFrame y en el constructor de clase añadimos:
public JFrame() { initComponents(); DefaultListModel<String> modelOriginal = new DefaultListModel(); modelOriginal.addElement("Aquiles Brinco"); modelOriginal.addElement("Aquiles Baeza (Parada)"); modelOriginal.addElement("Armando Casas"); modelOriginal.addElement("Débora Melo"); modelOriginal.addElement("Elsa Pato"); modelOriginal.addElement("Elsa Pito"); modelOriginal.addElement("Elsa Podiondo"); modelOriginal.addElement("Elba Zurita"); modelOriginal.addElement("Luz Rojas"); modelOriginal.addElement("Marcia Ana"); modelOriginal.addElement("Rosamel FIerro"); modelOriginal.addElement("Susana Oria"); modelOriginal.addElement("Zacarias Flores del Campo"); modelOriginal.addElement("Aquiles Castro"); modelOriginal.addElement("Keca Galindo"); modelOriginal.addElement("Elma Montt"); modelOriginal.addElement("Sole Dolio"); modelOriginal.addElement("Débora Cabezas Parada"); modelOriginal.addElement("Lucho Pay"); modelOriginal.addElement("Armando Mocha"); modelOriginal.addElement("Paloma María Parada"); modelOriginal.addElement("Alma Marcela Goza de Alegría"); modelOriginal.addElement("Guillermo Nigote"); modelOriginal.addElement("Elvis Tek"); modelOriginal.addElement("Sevelinda Parada"); modelOriginal.addElement("José Luis Lamata Feliz"); modelOriginal.addElement("Aquiles Bailo"); modelOriginal.addElement("Alan Brito Delgado"); modelOriginal.addElement("Benito Camelo"); modelOriginal.addElement("Dolores Delano"); modelOriginal.addElement("Elsa Capunta"); modelOriginal.addElement("Elmer Curio"); modelOriginal.addElement("Elba Lazo"); modelOriginal.addElement("Elsa Pallo"); modelOriginal.addElement("Mary Conazo"); modelOriginal.addElement("Mario Neta"); modelOriginal.addElement("Soila Cerda"); modelOriginal.addElement("Zampa Teste"); modelOriginal.addElement("Elsa Polindo"); modelOriginal.addElement("Pato Carlos Bustos de la Vaca"); modelOriginal.addElement("Jorge Nitales"); modelOriginal.addElement("Elva Gina"); modelOriginal.addElement("Esteban Dido"); modelOriginal.addElement("Elba Calao"); modelOriginal.addElement("José Lamata Feliz"); modelOriginal.addElement("Rosa Malcacho"); modelOriginal.addElement("Yola Prieto"); modelOriginal.addElement("Rosa Meza Cabeza"); modelOriginal.addElement("Elvio Lao"); modelOriginal.addElement("Elver Galinda Parada"); modelOriginal.addElement("Miren Amiano"); modelOriginal.addElement("Rosamel Forrito"); this.jList1.setModel(modelOriginal); //Caja de Texto jTextField1.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) {//Se ejecuta cuando se libera una tecla JTextField textField = (JTextField) e.getSource(); //obtiene contenido del textfield String text = textField.getText(); if (text.trim().length() > 0) { //nuevo Model temporal DefaultListModel<String> tmp = new DefaultListModel(); for (int i = 0; i < modelOriginal.getSize(); i++) {//recorre Model original //si encuentra coincidencias agrega a model temporal if (modelOriginal.getElementAt(i).toLowerCase().contains(text.toLowerCase())) { tmp.addElement(modelOriginal.getElementAt(i)); } } //agrega nuevo modelo a JList jList1.setModel(tmp); } else {//si esta vacio muestra el Model original jList1.setModel(modelOriginal); } } }); }
Eso es todo, ejecuta y prueba
enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
OS.js a pesar de lo que sugiere su nombre, no es en si un Sistema Operativo, es más, en su web oficial no se nombra por...
En este post implementamos en lenguaje Kotlin (lenguaje de programación de tipado estático que corre sobre la máquina vi...
No se puede negar la popularidad que ganaron las aplicaciones de JavaScript en los últimos años, y las bibliotecas dispo...
Hola 🙂 en esta ocasión un amigo del Brasil nos envía un proyecto java de una Urna Electrónica o Voto Electronico, desarr...
En este tutorial de android, vemos como leer un archivo de texto y mostrarlo en pantalla del celular, el texto elegido e...
En esta oportunidad construiremos una aplicación android que nos permitirá consumir un servicio web utilizando la libre...
Los comentarios estan cerrados
El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...
WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...
Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...
TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...
¡Excelente aporte!. Una pregunta como lo harías con una conexión a BD:
Lo que se me ocurre es correr la query cada vez que presione una tecla ¿Es lo más eficiente? ¿Como lo harías tu?
De antemano gracias por tu respuesta.
pues si es en local, no hay problema, pero la forma que mencionas seria mas que todo para un jtextbox, en este caso es un JList y los valores ya están cargados en memoria por lo que llamar a la base de datos seria hacer doble trabajo