sclass AutoComboBox extends JComboBox { String keyWord[] = {"item1", "item2", "item3"}; Vector myVector = new Vector(); *() { setModel(new DefaultComboBoxModel(myVector)); setSelectedIndex(-1); setEditable(true); JTextField text = (JTextField) this.getEditor().getEditorComponent(); text.setFocusable(true); text.setText(""); text.addKeyListener(new ComboListener(this, myVector)); setMyVector(); } /** * set the item list of the AutoComboBox * @param keyWord an String array */ void setKeyWord(String[] keyWord) { this.keyWord = keyWord; setMyVector(); } void setKeyWord(Collection keyWord) { setKeyWord(toStringArray(keyWord)); } private void setMyVector() { copyArrayToVector(keyWord, myVector); } } sclass ComboListener extends KeyAdapter { JComboBox cbListener; Vector vector; public ComboListener(JComboBox cbListenerParam, Vector vectorParam) { cbListener = cbListenerParam; vector = vectorParam; } public void keyReleased(KeyEvent key) { if (key.getKeyCode() == KeyEvent.VK_ENTER) ret; JTextField tf = cast cbListener.getEditor().getEditorComponent(); if (tf.getCaretPosition() != l(tf.getText())) ret; String text = ((JTextField) key.getSource()).getText(); Vector list = getFilteredList(text); if (nempty(list)) { cbListener.setModel(new DefaultComboBoxModel(list)); cbListener.setSelectedIndex(-1); tf.setText(text); // necessary? cbListener.showPopup(); } } public Vector getFilteredList(String text) { ret new Vector(scoredSearch(text, vector)); } }