Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Búsqueda dinámica en JList

Búsqueda dinámica en JList

Por 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

Artículos similares

Operador de Complemento bit a bit «~»

Operador de Complemento bit a bit unario Entre los operadores a nivel de bits de uso más común en java tenemos al operad[...]

Cifrado del Cesar en C Sharp

En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de[...]

ANSI: Colorear consola de salida de Netbeans

Cuando realizamos proyectos java desde Netbeans, usamos System.out.println para imprimir datos en consola (para dep[...]

Construye tu aplicación de mensajeria

En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android. Necesitamos IDE: Eclipse + S[...]

Generador de códigos QR (Quick Response)

En este tutorial aprenderemos a crear nuestra propia aplicación java para generar códigos QR. ¿Que es un Código QR? «Un[...]

Material Design: Paleta de Colores

«Material Design es una guía integral para el diseño visual, de movimientos y de interacción en distintas plataformas y[...]