按下输入时触发 Vaadin ComboBox 模糊事件

Vaadin ComboBox blur event gets triggered when enter pressed

我需要向 ComboBox 添加一个 Enter 快捷键侦听器。我只需要在 ComboBox 聚焦时使用快捷方式。我使用了 this 答案中描述的方法。

    combo.addFocusListener(new FocusListener() {
        @Override
        public void focus(FocusEvent event) {
            combo.addShortcutListener(shortcutListener);
        }
    });
    combo.addBlurListener(new BlurListener() {
        @Override
        public void blur(BlurEvent event) {
            combo.removeShortcutListener(shortcutListener);
        }
    });

它的作用是,当组合框获得焦点时添加快捷方式监听器,当组合框失去焦点时移除快捷方式监听器。

这适用于 TextFields 但不适用于 ComboBox。原因是,每当我在 ComboBox 上按回车键时,都会调用模糊事件,而不是调用快捷方式侦听器。由于在触发模糊事件时删除了快捷方式侦听器,因此快捷方式侦听器永远不会被触发。

为什么组合框在按下回车键时会触发模糊事件?我怎样才能解决这个问题?

正如上面评论中所讨论的,包装组合框面板并向其添加快捷方式侦听器。这应该有效。

为什么?默认情况下,当您添加快捷方式侦听器时,此快捷方式侦听器的范围将添加到封闭 Panel/Window/UI(基本上是单个组件容器)。

希望对您有所帮助。