我正在寻找一种方法来创建链接到 jlist 的搜索框,以便当用户键入字符序列时,它将搜索并匹配到 JList 项目,然后突出显示该项目。 我创建了一个 jtextfield 并添加了一个按键监听器。 这部分代码可以正常工作,但仅限于用户键入的第一个字符。我正在尝试将其扩展到用户输入的任意数量的字符。有什么想法如何实现这一目标吗?预先感谢您
String[] feedStrings = {"aaa", "abc", "opo","oiuu"}
JList feedList = new JList(feedStrings);
feedList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
feedList.setLayoutOrientation(JList.VERTICAL);
feedList.setVisibleRowCount(4);
JTextField searchbox = new JTextField();
searchbox.setColumns(8);
searchbox.setVisible(true);
searchbox.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
String text = "" + e.getKeyChar();
StringBuffer buffer = new StringBuffer();
buffer.append(text);
String strbuf = buffer.toString();
int index = feedList.getNextMatch(strbuf, 0, Position.Bias.Forward);
System.out.println(index);
feedList.setSelectedIndex(index);
}
});
最佳答案
but only for the first character the user types. I am trying to expand this to any number of characters the user types
只需使用文档中的文本即可。这是使用 DocumentListener 而不是 KeyListener 的另一个原因。
尽管我喜欢使用 JTable 的建议。关于如何使用表
的 Swing 教程甚至有一个工作示例,可以准确地向您展示如何执行此操作。您可以通过阅读 JTable API 找到本教程的链接。
关于java - 搜索 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211964/