如何使用Java重新映射键盘上的键,以便为键赋予新的含义?
答案 0 :(得分:1)
如果我理解了这个问题,那就是如何明确定义特定键的行为。这是我如何实现键盘快捷键 - 希望它能回答你的问题。在下面的示例中,我相信您可以将“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);
答案 1 :(得分:0)
不要真正了解问题的背景。但理论上,您可以拦截所有KeyEvent,然后根据您的条件调度不同的KeyEvent。 Global Event Dispatching可能会给你一些想法。
答案 2 :(得分:-2)
捕获关键事件:
java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(myListener, AWTEvent.KEY_EVENT_MASK);
模拟按键:
java.awt.Robot.keyPress(myKeyCode);