Ir al contenido principal

Añadiendo autocompletado a un JTextField de Java Swing


Esta vez para un trabajo de clase en Java Swing me vi con la necesidad de tener un JTextField con autocompletado ( como la caja de texto de Google cuando buscas algo ) y como no viene por defecto el JTextField con esta característica , pues tuve que hacerme uno. Pero en este caso no me hacía falta consultar una base de datos para rellenarlo según vas escribiendo en él, sino que a este ya le doy los datos a filtrar de antemano.

Tú dirás ... pero si hay miles en internet ya hechos , por qué reinventar la rueda ...,  Ya , ya lo sé , pero en algunos de los que ví , no me gustaba la manera de como se implementaban en el código para poder usarlo , otros no me gustaban como se veían visualmente , y lo más importante ... yo no me podía quedar con la duda de como se hacía uno ( esta última era la que más me podía jeje , yo y mi curiosidad ).


¿Cómo lo uso ?

Te explico como funciona el componente GTextField , tan simple como instanciarlo y en su constructor pasarle tres parámetros , ancho del popup deseado , alto del popup deseado y si queremos que se muestre el autocompletado, true o false. En caso de no querer usar el autocompletado puedes pasarle 0,0,false.

También permito cambiar esos valores de esas propiedades una vez instanciado el objeto con sus getters y setters.

Ejemplo:


GTextField gTextField = new GTextField(300,80,true);

gTextField.getDataList().add("Gabriel");
gTextField.getDataList().add("Gerardo");
gTextField.getDataList().add("Tanausu");
gTextField.getDataList().add("Tanausu");
gTextField.getDataList().add("Tanausu");
gTextField.getDataList().add("Pablo");
gTextField.getDataList().add("Juan");
gTextField.getDataList().add("Carlos");
gTextField.getDataList().add("Mario");

Con esto le he dicho , que quiero que el popup cuando encuentre una coincidencia tenga 300 píxeles de ancho por 80 píxeles de alto y que se muestre , con true.


También seguidamente cargamos los datos que va a autocompletar. Y ya está listo para usarse. Cuanto escribas en el y encuentre algo, se mostrará.





Aquí te dejo un proyecto de Eclipse usándolo , para que te sirva de ejemplo y tienes el código fuente,  y si puedes mejorarlo pues perfecto, pero para mi caso , me valía así tal cual está.


Un saludo y espero que te sirva de utilidad ;)