Key binding : utilisation de InputMap et ActionMap
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:
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:
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)