繁体   English   中英

在jList项目中找到任何地方?

[英]Find anywhere in jList items?

我可以用此代码在jlist中找到项目。 但我想在项目中找到任何地方。 我怎样才能做到这一点。 非常感谢。 (对不起,我的英语)

例如:我可以找到“ New或San”,但是我想找到“ York或Diago”。

纽约
San Diago

  jTextField1.addKeyListener(new KeyAdapter() {
        public void keyReleased(KeyEvent e) {
            String text = "" + e.getKeyChar();
            StringBuffer buffer = new StringBuffer(jTextField1.getText().substring(0, jTextField1.getText().length() - 1));
            buffer.append(text);
            int index = jList1.getNextMatch(buffer.toString(), 0, Position.Bias.Forward);
            jList1.setSelectedIndex(index);
        }
    });

getNextMatch检查给定的字符串在作为第二个参数传递的开始位置是否存在。 您可以遍历jlist来找到索引。

jTextField1.addKeyListener(new KeyAdapter() {
    public void keyReleased(KeyEvent e) {
        String text = "" + e.getKeyChar();
        StringBuffer buffer = new StringBuffer(jTextField1.getText().substring(0, jTextField1.getText().length() - 1));
        buffer.append(text);
        ListModel<String> model = jList1.getModel();
        int index; 
        for(int i = 0; i < model.getSize(); i++) {
            if(model.getElementAt(i).contains(buffer.toString())){
                index = i;
                break;
            }
        }

        jList1.setSelectedIndex(index);
    }
});

我相信JList中可用的方法仅在项目以特定前缀开头时搜索。

public List<Integer> getMatches(ListModel listModel, String text){
List<Integer> indices = new List<Integer>();
for(int i = 0; i < listModel.getSize(); i++){
    if(listModel.getElementAt(i).contains(text)){
        indices.add(i);
    }
}
return indices;

}

上面的方法迭代listmodel并检查每个元素是否包含提供的文本,并返回匹配项的索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM