提问者:小点点

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


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

    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);
        }
    });

它的作用是,在组合框获得焦点时添加快捷方式侦听器,并在组合框失去焦点时删除快捷方式侦听器。

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

为什么组合框触发模糊事件时,输入被按下?我如何得到这个固定?


共1个答案

匿名用户

如上所述,包装组合框是面板并向其添加快捷方式侦听器。这应该可以。

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

希望这有帮助。