Bonjour,

Après avoir lu le tutorial "key binding" d'oracle, je n'arrive pas à utiliser correctement InputMap et ActionMap.

Mon interface graphique ne contient que deux éléments : une JFrame et un JPanel dans lequel je dessine des trucs. Je voudrais associer des actions aux flèches directionelles (VK_LEFT, VK_RIGHT, ...). Le problème est que les flèches ne produisent pas de caractères Unicode, donc dans mon actionPerformed(), l'appel de getActionCommand() me renvoie "null" :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
class Panneau extends JPanel {
  Panneau() {
    Object cle = new Object();
    getInputMap().put(KeyStroke.getKeyStroke("LEFT"), cle);
    getInputMap().put(KeyStroke.getKeyStroke("RIGHT"), cle);
    getActionMap().put(cle, new ActionsClavier());
  }
}

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
class ActionsClavier extends AbstractAction {
  public void actionPerformed(ActionEvent e) {
    String touche = e.getActionCommand();
    System.out.println(touche); // affiche "null"
    if (touche.equals("LEFT"))
      ;//aller a gauche
    else if (touche.equals("RIGHT"))
      ;//aller a droite
  }
}

Avez-vous une idée de comment récupérer l'entier qui correspond à un champ static de KeyEvent ? (exemple KeyEvent.VK_LEFT ou KeyEvent.VK_RIGHT)