搜索JList

时间:2014-01-19 01:04:13

标签: java swing jtextfield jlist keylistener

我正在寻找一种方法来创建一个链接到jlist的搜索框,这样当用户键入一个字符序列时,它将搜索并匹配一个JList项,然后突出显示该项。 我创建了一个jtextfield并添加了一个keylistener。 这部分代码可以正常工作,但仅适用于用户键入的第一个字符。我试图将其扩展为用户键入的任意数量的字符。任何想法如何实现?提前谢谢

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

1 个答案:

答案 0 :(得分:1)

  

但仅适用于用户输入的第一个字符。我正在尝试将其扩展为用户键入的任意数量的字符

只需使用文档中的文字即可。这是使用DocumentListener而不是KeyListener的另一个原因。

虽然我喜欢使用JTable的建议。 How to Use Tables上的Swing教程甚至还有一个工作示例,向您展示如何执行此操作。您可以通过阅读JTable API找到指南的链接。