我想用java swing为PC制作一个窗口应用程序。我想在那里做一个文本字段。在输入该文本字段时,我需要它在该文本字段下显示提示。用户可以从列表中选择所需的文本。就像谷歌在浏览器中搜索一样。所以我需要两个函数,第一个很简单:通过已经键入的文本过滤一组字符串。但是如何在列表中显示它们呢?
编辑1:如果过滤后有什么要显示的,我需要显示列表,并且可以使用上下键进行选择。与谷歌搜索相同,但在PC应用程序上。
我建议您在JTextField中添加一个DocumentChangeListener来监控插入/删除/更新的字符:
JTextField textField = new JTextField;
textField.addDocumentListener (new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
}
public void removeUpdate(DocumentEvent e) {
}
public void insertUpdate(DocumentEvent e) {
}
}
);
看看这个教程。
所以我需要两个函数,首先其中一个很简单:过滤一组字符串通过已键入的文本。
既然您已经键入了文本,请过滤您的字符串集。在选择从数据结构中存储和检索字符串的有效方式时要小心。有很多字符串要排序,这可能不是微不足道的。(我认为,如果字符串集很大,那么使用ArrayList将很难做到这一点。)
但是如何在列表中显示它们呢?
我认为你可以使用JLabel。或者,您可以尝试使用JComboBox实现自己的ComboBoxModel。我不知道是否可以一直打开组合框。
JComboBox
是常见的选择。AutoCompleteJComboBoxer
是我尝试过的一个。
嗯。。。。在JTextField中,为keypress添加一个监听器,然后在按下任何键时,使用一个集合对所有相关元素进行排序。一个选项是让String到toChar来获取每个字符,然后将记录发布到JList中。
其次,您最好将记录保存在XML中,这样跟踪就更容易了——任何类型的排序算法逻辑都可以很容易地应用。