Если я понимаю вопрос, это как явно определить поведение для конкретного ключа. Вот как я делаю это для реализации сочетаний клавиш - надеюсь, это ответит на ваш вопрос. В моем примере ниже, я полагаю, что вы можете изменить 'this', чтобы это был конкретный компонент, для которого вы хотите явно установить поведение клавиатуры, переопределяя ее поведение по умолчанию. Я обычно делаю это в контексте панели или фрейма.
private void addHotKey(KeyStroke keyStroke, String inputActionKey, Action listener) {
ActionMap actionMap = this.getActionMap();
InputMap inputMap = this.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(keyStroke, inputActionKey);
actionMap.put(inputActionKey, listener);
}
inputActionKey - это произвольная строка ключей, используемая для отображения действия. Пример вызова этого метода для прослушивания клавиши DEL:
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0);
Action listener = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
// delete something...
}
};
addHotKey(keyStroke, "MainWindowDEL", listener);