#java #swing #key-bindings
#java #swing #привязки клавиш
Вопрос:
Я создаю клон Pong и пытаюсь использовать привязки клавиш. Это работает:
getInputMap().put(KeyStroke.getKeyStroke("F2"),"leftup");
getActionMap().put("leftup", new AbstractAction() {
private static final long serialVersionUID = -7625435800213244316L;
public void actionPerformed(ActionEvent e) {
System.out.println("Yay");
}
});
Но не это:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_W, Event.ACTION_EVENT),"leftup");
getActionMap().put("leftup", new AbstractAction() {
private static final long serialVersionUID = -7625435800213244316L;
public void actionPerformed(ActionEvent e) {
System.out.println("Yay");
}
});
Комментарии:
1. Вы не указали, что пытаетесь сделать, только то, что код не работает.
Ответ №1:
Согласно документам Java, нет перегрузки getKeyStroke
, которая соответствует KeyEvent, Event .
Довольно уверен
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_W, Event.ACTION_EVENT),"leftup");
должно быть
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_W),"leftup");
Комментарии:
1. Он возвращает значение int, а не KeyEvent .
2. А, понятно. В этом случае в документах указано, что второй параметр должен быть маской-модификатором, а не типом события. Установите его равным 0 согласно download.oracle.com/javase/1.4.2/docs/api/javax/swing /…