Java-Tastaturbelegungen funktionieren nicht

Ich versuche, Tastaturbelegungen in Java auf einem JPanel zu erstellen. Ich möchte, dass eine bestimmte Aktion ausgeführt wird, wenn ich die Taste 'w' drücke. Ich folge dem Java-Tutorial zum Erstellen von Bindungen, aber die actionPerformed-Methode wird nicht ausgeführt (d. H. Es wird kein Text gedruckt). Das Folgende ist der gesamte Code für meine Test-GUI, wobei der relevante Teil hervorgehoben ist:

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();     
}

}

Der Text "Test" wird nie gedruckt. Ich habe viele Male mit vielen verschiedenen Varianten, verschiedenen Tasten versucht, und ich stelle sicher, dass das Bedienfeld im Fokus ist, aber kein Glück. Was mache ich falsch?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage