【问题标题】:How to avoid firing itemStateChanged event in JComboBox while typing?键入时如何避免在 JComboBox 中触发 itemStateChanged 事件?
【发布时间】:2015-11-30 20:23:48
【问题描述】:

我有一个可编辑的 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();
                }
            }
        });

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

【问题讨论】:

    标签: java autocomplete jcombobox


    【解决方案1】:

    这就是答案,仅在组合框编辑器组件中添加自动完成功能即可解决问题。但在这种情况下,您必须将自动完成列表提供为 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);
    

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多