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

时间:2020-03-06 14:24:57  来源:igfitidea点击:

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

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

解决方案

安装自定义KeyEventDispatcher。 KeyboardFocusManager类也是使用此功能的好地方。

KeyEventDispatcher

对于每个窗口,请使用条件为" WHEN_IN_FOCUSED_WINDOW"的" JComponent.registerKeyboardAction"。或者使用:

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

如registerKeyboardAction API文档中所述。