#java #macos #swing #osx-snow-leopard
#java #macos #качать #osx-snow-leopard
Вопрос:
Я пытаюсь написать программу, которая использует ключевые события для активации метода. Код работает на компьютерах с Windows, но при переносе на Mac он не реагирует на нажатие моей клавиши «Пробел». Я предполагаю, что это связано с различными используемыми кодами ключей.
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
System.out.println("SPACEBAR");
grid.stepGame();
}
}
Есть идеи, как я могу заставить это работать на Mac?
Редактировать — Проблема была решена с помощью приведенного ниже ответа — Для примечания, хотя кажется, что на Mac фрейм никогда автоматически не восстанавливает фокус, следовательно, почему keylistener не работает, активирован другой JComponent.
Ответ №1:
Я не уверен в вашей конкретной проблеме, но можно поспорить, что если вы переключитесь на использование привязок клавиш вместо прослушивателей ключей, ваша проблема исчезнет. С сайта 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);