Java KeyEvents на Mac - PullRequest
       1

Java KeyEvents на Mac

1 голос
/ 21 октября 2011

Я пытаюсь написать программу, которая использует ключевые события для активации метода. Код работает на компьютерах с Windows, но при передаче на Mac он не реагирует на нажатие моего «пробела». Я предполагаю, что это связано с различными используемыми кодами клавиш.

public void keyPressed(KeyEvent e) {
    if (e.getKeyCode() == KeyEvent.VK_SPACE) {
        System.out.println("SPACEBAR");
        grid.stepGame();

    }
}

Любые идеи, как я могу заставить это работать на Mac?

Редактировать - проблема была решена с помощью ответа ниже - для заметки, хотя кажется, что на Mac кадр никогда не восстанавливает фокус автоматически, следовательно, почему не работает keylistener, другой активированный компонент JComponent.

1 Ответ

4 голосов
/ 21 октября 2011

Я не уверен относительно вашей конкретной проблемы, но стоит поспорить, что если вы переключитесь на использование привязок клавиш вместо прослушивателей клавиш, ваша проблема исчезнет. С сайта Java Tutorials:

Примечание: Чтобы определить особые реакции на определенные клавиши, используйте привязки клавиш вместо прослушивателя клавиш.

Как пример

// Component that you want listening to your key
JComponent component = ...;
component.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0),
                        "actionMapKey");
component.getActionMap().put("actionMapKey",
                         someAction);
...