Las palabras las tomo de arreglo de String, pero como lo cito en el code, para que sea un aplicación seria el arreglo debería ser dinámico lo mejor es consultar una base de datos y tomar los datos de allí, asi mismo si el termino no esta definido en la lista debe estar en la capacidad de adicionar mas palabritas, si alguien se le apunta de una lo apoyo
Bueno les dejo code t salud2
Código
import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.sql.Date; import javax.swing.*; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; /* * Autocompletar !!!! * */ // Creamos el Marco o Frame // con este metodo podemos cerrar la ejecucion // del programa f.setSize(300,300); // le damos el tamaño //Creamos el contenedor para alojar nuestras // funciones GUI c.setLayout(null); //pues por ahora le mando un arreglo pero cuando sea // un aplicacion seria este arreglo se llena desde la // base de datos // Hacemos Up-Casting j.setBounds(50,50,100,20); j.setEditable(true); // Damos permisos para que se pueda editar f.add(j); // hacemos el upcasting f.setVisible(true); } // ESTO ES RARO PERO SE PUEDE :) // creamos un clase llamada formato la cual nos permite // darle formato solamente en el tamaño de caracteres //admitidos, asi como si acepta caracteres alfanuméricos // o solo numéricos al elemento // Podemos Observar que esta Retornando <---------- if (str == null){ return; } super.insertString(offset,str, a); if (str.length()!=0){ // Este metodo activa el evento grafico sin el // el efecto no seria posible fireActionEvent(); } } } super(cuerpo); // Recordemos que JAng3r extiende o hereda de JComboBox // Por estas razones le envio este objeto al evento // setKeySelectionManager(JComboBox); setKeySelectionManager(this); JTextField jtext; // con el metodo getEditor() retornamos el editor // con el que se creo el JComboBox // Le pasamos el formato al JtextField jtext.setDocument(new Formato()); { { String aux; for(int i = 0; i < aModel.getSize(); i++) { aux = aModel.getElementAt(i).toString(); if(aux.toLowerCase().startsWith(text.toLowerCase())) { textf.setText(aux); textf.setSelectionStart(text.length()); textf.setSelectionEnd(aux.length()); break; } } } }); } return 0; } }
FUENTE