Привязки клавиш Java не работают
Я пытаюсь сделать привязки клавиш в Java на JPanel. Я хочу, чтобы определенное действие выполнялось, когда я нажимаю 'w' кнопка. Я следую Java-уроку по созданию привязок, но метод actionPerformed не выполняется (то есть текст не печатается). Ниже приведен полный код моего тестового графического интерфейса с выделенной соответствующей частью:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
@SuppressWarnings("serial")
public class Test extends JFrame{
private JPanel panel;
public Test(){
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,500);
setLayout(new BorderLayout());
setVisible(true);
panel = new JPanel();
// HERE ARE THE KEY BINDINGS
panel.getInputMap().put(KeyStroke.getKeyStroke('w'),"forward");
panel.getActionMap().put("forward", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("test");
}
});
// END OF KEY BINDINGS
add(panel, BorderLayout.CENTER);
}
public static void main(String[] args){
new Test();
}
}
Текст "тестовое задание" никогда не печатается. Я много раз пробовал с разными вариантами, разными клавишами, и я уверен, что панель в фокусе, но не повезло. Что я делаю неправильно?