应用程序范围的键盘快捷键 - Java Swing

2022-09-01 08:07:04

我想为Java Swing应用程序创建一个应用程序范围的键盘快捷键。循环访问所有组件并在每个组件上添加快捷方式,具有与焦点相关的副作用,并且似乎是一种蛮力解决方案。

有人有更清洁的解决方案吗?


答案 1

对于每个窗口,请在条件为 的情况下使用。或者使用:JComponent.registerKeyboardActionWHEN_IN_FOCUSED_WINDOW

JComponent.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(keyStroke, command);
JComponent.getActionMap().put(command,action);

registerKeyboardAction API 文档中所述。


答案 2

安装自定义密钥事件巡视器。KeyboardFocusManager 类也是实现此功能的好地方。

KeyEventDispatcher


推荐