Java 如何避免在键入时在JComboBox中触发itemStateChanged事件?

Java 如何避免在键入时在JComboBox中触发itemStateChanged事件?,java,autocomplete,jcombobox,Java,Autocomplete,Jcombobox,我有一个JComboBox,它是可编辑的,并启用了自动更正,如下所示 comboForward = new JComboBox(); comboForward.setEditable(true); AutoCompletion ac = new AutoCompletion(this.comboForward); comboForward.addItemListener(new ItemListener() {

我有一个JComboBox,它是可编辑的,并启用了自动更正,如下所示

        comboForward = new JComboBox();
        comboForward.setEditable(true);
        AutoCompletion ac = new AutoCompletion(this.comboForward);
        comboForward.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    new Thread() {
                        @Override
                        public void run() {
                            //code to run after event fires                     
                        }
                    }.start();
                }
            }
        });

当用户在组合框内键入
时,如何避免触发此事件。或者至少有一种方法可以检测用户何时完成键入?感谢您的帮助。

以下是答案,将仅自动完成添加到组合框编辑器组件将解决此问题。但在这种情况下,您必须以String
ArrayList
的形式提供自动完成列表

ComboBoxEditor editor = comboForward.getEditor();
    JTextField textField = (JTextField) editor.getEditorComponent();
    ArrayList<String> autoCompleteList = new ArrayList<String>();
    for (Object item : comboForward.getItemList()) {
       autoCompleteList.add(item.toString());
    }

   AutoCompletion  autoCompletion = new AutoCompletion(textField, autoCompleteList);
ComboBoxEditor editor=comboForward.getEditor();
JTextField textField=(JTextField)editor.getEditorComponent();
ArrayList自动完成列表=新的ArrayList();
对于(对象项:comboForward.getItemList()){
autoCompleteList.add(item.toString());
}
自动完成自动完成=新的自动完成(文本字段,自动完成列表);

答案如下,将“仅自动完成”添加到组合框编辑器组件将解决此问题。但在这种情况下,您必须以String
ArrayList
的形式提供自动完成列表

ComboBoxEditor editor = comboForward.getEditor();
    JTextField textField = (JTextField) editor.getEditorComponent();
    ArrayList<String> autoCompleteList = new ArrayList<String>();
    for (Object item : comboForward.getItemList()) {
       autoCompleteList.add(item.toString());
    }

   AutoCompletion  autoCompletion = new AutoCompletion(textField, autoCompleteList);
ComboBoxEditor editor=comboForward.getEditor();
JTextField textField=(JTextField)editor.getEditorComponent();
ArrayList自动完成列表=新的ArrayList();
对于(对象项:comboForward.getItemList()){
autoCompleteList.add(item.toString());
}
自动完成自动完成=新的自动完成(文本字段,自动完成列表);