Как переназначить клавиатуру с помощью Java Swing? - PullRequest
0 голосов
/ 20 сентября 2009

Как мне переназначить клавишу на клавиатуре с помощью Java, чтобы придать клавише новое значение?

Ответы [ 3 ]

1 голос
/ 04 ноября 2009

Если я понимаю вопрос, это как явно определить поведение для конкретного ключа. Вот как я делаю это для реализации сочетаний клавиш - надеюсь, это ответит на ваш вопрос. В моем примере ниже, я полагаю, что вы можете изменить '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);
0 голосов
/ 21 сентября 2009

Не совсем понимаю контекст вашего вопроса. Но теоретически вы можете перехватить все KeyEvents и затем отправить другое KeyEvent в соответствии с вашими критериями. Глобальная рассылка событий может дать вам несколько идей.

0 голосов
/ 21 сентября 2009

Захват ключевых событий:

java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(myListener, AWTEvent.KEY_EVENT_MASK);

Имитация нажатия клавиши:

java.awt.Robot.keyPress(myKeyCode);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...