J'essaie de créer des liaisons de touches en Java sur un JPanel. Je veux qu'une certaine action s'exécute quand j'appuie sur le bouton 'w'. Je suis le didacticiel Java sur la création de liaisons, mais la méthode actionPerformed ne s'exécute pas (c'est-à-dire que le texte ne s'imprime pas). Voici l'intégralité du code pour mon interface graphique de test, avec la partie pertinente mis en avant:Les liaisons de touches Java ne fonctionnent pas
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();
}
}
Le texte « test » est jamais imprimé. J'ai essayé plusieurs fois avec de nombreuses variantes, différentes clés, et je m'assure que le panneau est net, mais pas de chance. Qu'est-ce que je fais mal?
n'a pas remarqué que vous utilisiez ' 'w'', pensé que vous utilisiez' "w" '. Mis à jour avec un exemple de travail – MadProgrammer