java comboBox自动完成

有人可以告诉我如何更改此代码以进行自动选择,我可以编写不存在的项目,因为它不会让我写新项目。

public class ComboBoxFill extends PlainDocument { ComboBoxModel model; JComboBox comboBox=new JComboBox(); JTextComponent editor; public ComboBoxFill(ComboBoxModel model, JComboBox comboBox,JTextComponent editor) { this.model = model; this.comboBox=comboBox; this.editor=editor; } public void insertString (int offs,String str,AttributeSet a) throws BadLocationException { String currentText=getText(0,getLength()); String beforeOffset=currentText.substring(0,offs); String afterOffset=currentText.substring(offs,currentText.length()); String futureText = beforeOffset+str+afterOffset; Object item =lookupItem(futureText); if (item!=null) { comboBox.setSelectedItem(item); }else { item = comboBox.getSelectedItem(); offs=offs-str.length(); comboBox.getToolkit().beep(); } super.remove(0, getLength()); super.insertString(0, item.toString(), a); if (item.toString().equals(str)&&offs==0) { highlightCompletedText(0); }else{ highlightCompletedText(offs+str.length()); comboBox.setPopupVisible(true); } } private boolean startsWithIgnoreCase(String str1, String str2) { return str1.toUpperCase().startsWith(str2.toUpperCase()); } private void highlightCompletedText(int start) { editor.setCaretPosition (getLength()); editor.moveCaretPosition(start); } private Object lookupItem(String pattern) { Object selectedItem=model.getSelectedItem(); if (selectedItem!=null && startsWithIgnoreCase(selectedItem.toString(), pattern)){ return selectedItem; }else{ for (int i=0, n=model.getSize();i<n;i++){ Object currentItem = model.getElementAt(i); if (startsWithIgnoreCase(currentItem.toString(),pattern)) { return currentItem; } } } return null; } 

}

我这样称呼它:

  JTextComponent editor3 = (JTextComponent) comboBox_2.getEditor().getEditorComponent(); editor3.setDocument(new ComboBoxFill(comboBox_2.getModel(),comboBox_2, editor3)); 

Java2s有一个例子: AutocompleteComboBox