Настройка широкополосных ключевых слушателей приложения - PullRequest
8 голосов
/ 05 августа 2009

Как настроить слушатели широких клавиш приложений (сочетания клавиш), чтобы при нажатии комбинации клавиш (например, Ctrl + Shift + T ) , определенное действие вызывается в приложении Java.

Я знаю, что для сочетаний клавиш можно установить JMenuBar пунктов меню, но в моем случае в приложении нет строки меню.

1 Ответ

17 голосов
/ 05 августа 2009

Ознакомьтесь с разделом Как использовать привязки клавиш в руководстве по Java.

Вам необходимо создать и зарегистрировать Action с ActionMap вашего компонента и зарегистрировать пару (KeyStroke, Имя действия ) в одном из InputMap s компонента вашего приложения. Учитывая, что у вас нет 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");
...