Vinculações de teclas Java não funcionam

Eu estou tentando fazer ligações em Java em um JPanel. Eu quero uma certa ação para executar quando eu pressionar o botão 'w'. Eu sigo o tutorial Java sobre como fazer ligações, mas o método actionPerformed não é executado (ou seja, nenhum texto é impresso). A seguir, a totalidade do código da minha GUI de teste, com a parte relevante destacada:

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

}

O texto "teste" nunca é impresso. Eu tentei muitas vezes com muitas variantes diferentes, chaves diferentes, e tenho certeza que o painel está em foco, mas sem sorte. O que estou fazendo de errado?

questionAnswers(1)

yourAnswerToTheQuestion