日期:2014-05-20  浏览次数:20782 次

JComboBox自动筛选
JComboBox自动筛选问题,例如JComboBox有三项112、123、222。当输入1时则把222过滤掉,当输入12时则只显示123.
希望给出思路或简单代码,谢谢

------解决方案--------------------
.. keyPress 事件中 获取 comboBox 的 text ,然后轮循 里面的内容是不是以 12开始的, 是就放到一个 list 中,不是则不管,然后再把这个 comboBox item 重新设 为 list
------解决方案--------------------
恩,过去输入的数字后,用String的startsWith方法来作为判断,然后用1楼的方法,用一个list来存放要的内容。
------解决方案--------------------
楼上说的可以,这就是自动完成功能啊。
但不明白楼主在什么地方输入的,JComboBox可以输入码?????
------解决方案--------------------
探讨
楼上说的可以,这就是自动完成功能啊。
但不明白楼主在什么地方输入的,JComboBox可以输入码?????

------解决方案--------------------
Java code

import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class JComboBoxDemo extends JFrame {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private JTextField jtf = null;
    private JComboBox jcb = null;
    private Vector<String> vdata = new Vector<String>();
    private Vector<String> v2 = null;

    public JComboBoxDemo() {
        this.setLayout(new FlowLayout());
        jtf = new JTextField(10);
        jtf.addKeyListener(new MyAdapter());
        this.add(jtf);
        vdata.add("1");
        vdata.add("32e");
        vdata.add("22");
        vdata.add("123");
        v2 = new Vector<String>(vdata);
        jcb = new JComboBox(vdata);
        jcb.setSelectedIndex(0);
        jcb.setEditable(true);

        this.add(jcb);
        this.setTitle("Demo");
        this.setSize(600, 450);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new JComboBoxDemo();
    }

    class MyAdapter implements KeyListener {

    
        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub

            String value = JComboBoxDemo.this.jtf.getText().trim();
            JComboBoxDemo.this.jcb.removeAllItems();
            for (String item : JComboBoxDemo.this.v2) {
                if (item.startsWith(value)) {
                    JComboBoxDemo.this.jcb.addItem(item);
                }
            }
            JComboBoxDemo.this.jcb.validate();
        }

        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub

        }

    }

}

------解决方案--------------------
学习一下....
------解决方案--------------------
楼主的泡泡堂头像不错,JComboBox是可以设置成编辑的,你就改一下吧,看行不,总不能自己一点也不想吧,这样可不好啊。