我需要将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事件时删除了快捷方式侦听器,因此快捷方式侦听器永远不会被触发。
为什么组合框触发模糊事件时,输入被按下?我如何得到这个固定?
如上所述,包装组合框是面板并向其添加快捷方式侦听器。这应该可以。
为什么?当您默认添加快捷方式侦听器时,此快捷方式侦听器的范围将添加到包含Panel/Window/UI(基本上是单个组件容器)。
希望这有帮助。