我需要向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事件而不是调用快捷方式侦听器。由于在触发模糊事件时删除了快捷方式侦听器,因此快捷方式侦听器永远不会被触发。
为什么组合框会在按下回车时触发模糊事件?我怎样才能解决这个问题?
答案 0 :(得分:1)
如上面的注释所述,将组合框包装在面板中,并为其添加快捷方式监听器。这应该有用。
为什么呢?默认情况下,当您添加快捷方式侦听器时,此快捷方式侦听器的范围将添加到封闭的Panel / Window / UI(基本上是单个组件容器)中。
希望这有帮助。