按下输入时触发 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);
}
});
它的作用是,当组合框获得焦点时添加快捷方式监听器,当组合框失去焦点时移除快捷方式监听器。
这适用于 TextField
s 但不适用于 ComboBox
。原因是,每当我在 ComboBox
上按回车键时,都会调用模糊事件,而不是调用快捷方式侦听器。由于在触发模糊事件时删除了快捷方式侦听器,因此快捷方式侦听器永远不会被触发。
为什么组合框在按下回车键时会触发模糊事件?我怎样才能解决这个问题?
正如上面评论中所讨论的,包装组合框面板并向其添加快捷方式侦听器。这应该有效。
为什么?默认情况下,当您添加快捷方式侦听器时,此快捷方式侦听器的范围将添加到封闭 Panel/Window/UI(基本上是单个组件容器)。
希望对您有所帮助。
我需要向 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);
}
});
它的作用是,当组合框获得焦点时添加快捷方式监听器,当组合框失去焦点时移除快捷方式监听器。
这适用于 TextField
s 但不适用于 ComboBox
。原因是,每当我在 ComboBox
上按回车键时,都会调用模糊事件,而不是调用快捷方式侦听器。由于在触发模糊事件时删除了快捷方式侦听器,因此快捷方式侦听器永远不会被触发。
为什么组合框在按下回车键时会触发模糊事件?我怎样才能解决这个问题?
正如上面评论中所讨论的,包装组合框面板并向其添加快捷方式侦听器。这应该有效。
为什么?默认情况下,当您添加快捷方式侦听器时,此快捷方式侦听器的范围将添加到封闭 Panel/Window/UI(基本上是单个组件容器)。
希望对您有所帮助。