java - 如何避免在打字时触发 JComboBox 中的 itemStateChanged 事件?

标签 java autocomplete jcombobox

我有一个可编辑并启用自动更正的 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 中输入内容时,如何避免触发此事件。或者至少有一种方法可以检测用户何时完成输入。 ?感谢您的帮助。

最佳答案

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

关于java - 如何避免在打字时触发 JComboBox 中的 itemStateChanged 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33934453/

相关文章:

java - 在java中从JDBC连接到MySql

jQuery 自动完成 - div 中的最后一行是 'hidden'

c# - 如何从 Silverlight AutoCompleteBox 中获取所选项目?

java - 监听 JComboBoxes 和 JTextFields 来修改激活类突变器

java - 如何向每个 JTree 节点添加不同的 JComboBox?

java - 如何从servlet中的html表中检索数据并将其插入数据库

java - 如何从终端创建可执行 jar 文件

java - 添加 Google Play 服务导致错误 Conversion to Dalvik Format failed with error 1

java - 在Java中,删除操作是正确的,但catch也会被执行

html - 防止所有浏览器自动填充密码