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)
Partager