Проблема с привязками клавиш

#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 /…