Autocompletar en Java Swing

A
[alert type=»warning»]Hay una actualización de esta librería, y esta versión ya no podrá ser descargada ni será actualizada más, puedes revisar la nueva versión aquí[/alert]

Hace tiempo había publicado una librería que contenía unos componentes, concretamente unos JTextField que tenían la posibilidad de Autocompletar los resultados mientras se va escribiendo en estos.

Estos componentes eran de lo más visto en mi anterior blog y siempre me hacían peticiones para mejorarlo o corregir errores, ahora con la mudanza (forzada) que tuve que hacer vuelvo a poner a disposición de todos esta herramienta que, si es muy útil.

No traigo exactamente lo mismo de antes ya que, la he trabajado de forma que no necesitan poner un componente, ahora las cosas son mucho más fáciles.

Paso 1

Descargar la librería que pueden descargar desde aquí

[alert type=»warning»]Hay una actualización de esta librería, y esta versión ya no podrá ser descargada ni será actualizada más, puedes revisar la nueva versión aquí[/alert]

Paso 2

Añadir la librería a su proyecto ( en este caso estoy usando netbeans 7.2 pero no es necesario ).

Solo queda buscar el JAR de la librería ( que descargaste arriba )

Paso 3

Ya solo nos queda usarla, como siempre importando los paquetes necesarios, en este caso solo es 1 clase:

import com.mxrck.autocompleter.TextAutoCompleter;

Crear una instancia y llenarla con nuevos items:

TextAutoCompleter textAutoAcompleter = new TextAutoCompleter( tuJTextField );

Obviamente tuJTextField es un JTextField que hayas creado en tu clase, ese es el constructor principal, pero también he agregado otros que sirven para solo al instanciar el objeto se le pasen items para autoacompletar ya sea un Array de String o un ArrayList<String>, así como otras opciones que mencionaré más adelante.

¿Como comenzar a utilizarlo?

Bien hasta este momento ya lo hemos instanciado y está listo para comenzar a funcionar, pero si no le has pasado items entonces no encontraras nada, en unas pocas líneas puedes ingresar los items que necesites

textAutoCompleter.addItem("item de prueba");
textAutoCompleter.addItem("segunda prueba");
textAutoCompleter.addItem("autoAcompletar");
textAutoCompleter.addItem("Java");

Está todo listo, ya solo te queda escribir en el cuadro de texto y ver como se rellena automáticamente.

Existen más opciones por recomendación de quienes estuvieron siguiendo mi trabajo y algunos agregados que he hecho, por defecto el TextAutoCompleter solo busca por prefijos pero puede ser modificado para que busque también por inflijosufijo ya sea por medio del constructor o con una línea de código:

textAutoCompleter.setMode(-1); // prefijo, viene por defecto
textAutoCompleter.setMode(0); // infijo
textAutoCompleter.setMode(1); // sufijo

Podemos ver las maneras en que trabajaría de las 3 formas diferentes:

Prefijo, busca coincidencias al inicio del item
Infijo, busca coincidencias que se encuentren por dentro del item, funciona igual que un prefijo y un sufijo al mismo tiempo, pero también evalúa los fragmentos internos
Sufijo, busca coincidencias de lo que se escribe con el final de los items
Otro agregado es que además de las formas de búsqueda también se puede definir si será sensible a mayúsculas y minúsculas o si no le dará importancia a las mismas:
textAutoCompleter.setCaseSensitive(true); // Sensible a mayúsculas
textAutoCompleter.setCaseSensitive(false); //No sensible a mayúsculas

Cuenta con más métodos para el manejo de los items, que pueden ir probando, cualquier problema con la librería o alguna idea para mejorarla son bien recibidas.

Saludos y hasta la próxima entrada.

[alert type=»warning»]Hay una actualización de esta librería, y esta versión ya no podrá ser descargada ni será actualizada más, puedes revisar la nueva versión aquí[/alert]

Acerca del autor

Mxrck

Ingeniero en Sistemas Computacionales, amante de la tecnología, los videojuegos, la programación.

Siempre aprendiendo algo nuevo.

"Always Thinking"

Por Mxrck

Categorías

Etiquetas