小编典典
我使用了另一种方法:
它使用一个称为的自定义类,该类AutoSuggestor接受a JTextField,其单词Windowan ArrayList来检查输入的单词,背景颜色和文本颜色以及建议焦点颜色以及不透明度值。通过传递JTextField引用DocumentListener,将添加a,它将执行以下操作:检查键入的单词以及是否显示建议以及是否显示建议。当一个单词键入的DocumentListener意志火wordTyped(String wordTyped)法与当前字所键入或(至少多少字有史以来已经输入),在wordTyped(..)这个词将被检查对那些在AutoSuggestor小号类 字典这是一个基本ArrayList的String这罐如下面的示例所示,可以即时设置:
在此处输入图片说明
(现在你将不得不使用鼠标单击要进行自动补全的词,或使用DOWN横向建议,该文本框,并ENTER使用遍历时选择的建议下键我还没有实现。UP还):
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.AbstractAction;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JWindow;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
/**
* @author David
*/
public class Test {
public Test() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField f = new JTextField(10);
AutoSuggestor autoSuggestor = new AutoSuggestor(f, frame, null, Color.WHITE.brighter(), Color.BLUE, Color.RED, 0.75f) {
@Override
boolean wordTyped(String typedWord) {
//create list for dictionary this in your case might be done via calling a method which queries db and returns results as arraylist
ArrayList words = new ArrayList<>();
words.add("hello");
words.add("heritage");
words.add("happiness");
words.add("goodbye");
words.add("cruel");
words.add("car");
words.add("war");
words.add("will");
words.add("world");
words.add("wall");
setDictionary(words);
//addToDictionary("bye");//adds a single word
return super.wordTyped(typedWord);//now call super to check for any matches against newest dictionary
}
};
JPanel p = new JPanel();
p.add(f);
frame.add(p);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test();
}
});
}
}
class AutoSuggestor {
p