如何设置应用程序范围的键侦听器(键盘快捷键),以便在键组合时(例如 Ctrl + Shift + T 按下,在Java应用程序中调用某个动作。
我知道键盘快捷键可以设置JMenuBar
个菜单项,但在我的情况下,应用程序没有菜单栏。
答案 0 :(得分:17)
查看Java教程的How To Use Key Bindings部分。
您需要在您的某个应用程序中创建并注册Action
组件的ActionMap
和注册a(KeyStroke
,操作名称)对组件的InputMap
。鉴于您没有JMenuBar
,您只需在应用程序中使用顶级JPanel
注册密钥绑定。
例如:
Action action = new AbstractAction("Do It") { ... };
// This is the component we will register the keyboard shortcut with.
JPanel pnl = new JPanel();
// Create KeyStroke that will be used to invoke the action.
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);
// Register Action in component's ActionMap.
pnl.getActionMap().put("Do It", action);
// Now register KeyStroke used to fire the action. I am registering this with the
// InputMap used when the component's parent window has focus.
pnl.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "Do It");