Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Búsqueda dinámica en JList

Búsqueda dinámica en JList

Autor jc mouse jueves, septiembre 7, 2017

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:

busqueda dinamica

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

gif java

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

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! :)

También Te Podría Interesar

Introducción a SQLite

Introducción a SQLite

Android hace uso de la base de datos SQLite para el manejo de registros en las aplicaciones. Según Santa Wikipedia defin...

Introducción a PHP con Netbeans

Introducción a PHP con Netbeans

NetBeans es un entorno de desarrollo integrado libre, hecho principalmente para el lenguaje de programación Java. Sin em...

Código de Control en PHP v7.0 Bolivia

Código de Control en PHP v7.0 Bolivia

NUEVA ESPECIFICACIÓN TÉCNICA DEL CÓDIGO DE CONTROL (Ver.7.0) En el marco del Nuevo Sistema de Facturación implementado p...

Lector Feed con Java/Rome

Lector Feed con Java/Rome

En este tutorial crearemos un lector de Feeds en Java/netbeans, pero antes debemosa saber que es un Feed, según Santa Wi...

Exportar registros MySQL a Excel

Exportar registros MySQL a Excel

Java Excel API es un API para java que permite a los desarrolladores leer y escribir en hojas de cálculo Excel. jexcelap...

Control de versiones con GIT y Netbeans

Control de versiones con GIT y Netbeans

Control de versiones: Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los eleme...

2 comentarios en “Búsqueda dinámica en JList”

  1. Datmau dice:

    ¡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.

    1. Mouse dice:

      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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Comparte lo que sabes

Categorias

Últimas entradas

PHPUnit es un framework que se utiliza para escribir tests en PHP, Netbeans nos permite configurarlo y usarlo fácilmente...

Una Prueba Unitaria, es una forma de comprobar que nuestro código, hace lo que se supone debe hacer; es decir, se asegur...

La prueba del camino básico, es una prueba de “caja blanca” que consiste en verificar el código de nuestros...

Si quieres cambiar el nombre de tus atributos sin tener que reescribir código java por X o Y razón, GSON te permite reno...

Android Bolivia

Bandera en Alto