sclass AutoComboBox extends JComboBox { String keyWord[] = {"item1", "item2", "item3"}; Vector myVector = new Vector(); public AutoComboBox() { 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; setMyVectorInitial(); } void setKeyWord(Collection keyWord) { setKeyWord(toStringArray(keyWord)); } private void setMyVector() { int a; for (a = 0; a < keyWord.length; a++) myVector.add(keyWord[a]); } private void setMyVectorInitial() { myVector.clear(); int a; for (a = 0; a < keyWord.length; a++) myVector.add(keyWord[a]); } } sclass ComboListener extends KeyAdapter { JComboBox cbListener; Vector vector; public ComboListener(JComboBox cbListenerParam, Vector vectorParam) { cbListener = cbListenerParam; vector = vectorParam; } public void keyReleased(KeyEvent key) { JTextField tf = cast cbListener.getEditor().getEditorComponent(); if (tf.getCaretPosition() != l(tf.getText())) ret; String text = ((JTextField)key.getSource()).getText(); cbListener.setModel(new DefaultComboBoxModel(getFilteredList(text))); cbListener.setSelectedIndex(-1); tf.setText(text); cbListener.showPopup(); } public Vector getFilteredList(String text) { ret new Vector(scoredSearch(text, vector)); } }