输入按下

时间:2016-03-11 09:07:03

标签: java vaadin

我需要向Enter添加ComboBox键快捷键侦听器。 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);
        }
    });

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

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

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

1 个答案:

答案 0 :(得分:1)

如上面的注释所述,将组合框包装在面板中,并为其添加快捷方式监听器。这应该有用。

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

希望这有帮助。