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 ;)