如何使用Java Swing重新映射键盘键?

时间:2009-09-20 05:39:58

标签: java swing keyboard

如何使用Java重新映射键盘上的键,以便为键赋予新的含义?

3 个答案:

答案 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);
相关问题