Bonjour,
Ce problème me laisse perplexe... Quand je presse la touche 'R', je suis sûr de passer au moins 1 fois par la fonction keyEvent.consume()...
Mais le problème est que le consume() ne se fait pas tout le temps, suivant la position dans le code, et je ne comprend pas pourquoi......
Voici mon code :
Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Toolkit.getDefaultToolkit().addAWTEventListener (new AWTEventListener() { public void eventDispatched(AWTEvent event) { KeyEvent ke = (KeyEvent)event; //POSITION 1 int keyCode = ke.getKeyCode(); int ID = ke.getID(); switch(keyCode) //Marche pour Pressed, Typed, Released... { case KeyEvent.VK_R: //POSTION 2 ke.consume(); //Je consomme dans les 3 cas (Typed, Pressed, Released) if(ID == KeyEvent.KEY_PRESSED){func();} //seulement dans le cas d'un Pressed, j'execute une fonction break; } //POSITION 3 } }, AWTEvent.KEY_EVENT_MASK );
- La fonction func() est bien exécutée
- donc a priori, la fonction consume() est appellée ?
- Le caractère 'r' apparait dans le TextField qui a le focus
Dans ce code, le consume() est à la position 2.
Si je le met à la position 1 ou 3, en revanche il marche parfaitement oO. C'est à dire que je ne vois plus le caractère 'r' dans les TextField... Ni rien du tout , ce qui est parfaitement normal puisque je consume tous les caractères sans distinction, mais ce dont je ne veux pas, vu que j'ai besoin des autres caractères...
Donc je ne comprend pas POURQUOI quand je met ça dans le switch, ça ne marche plus
(pour les gens qui se demandent pourquoi je met pas ça dans un IF, c'est parcequ'en réalité ya plusieurs touches/actions possible, mais que je ne met pas là. Et de toute façon, ça ne marche pas non plus dans un IF).
J'ai beau regarder dans tous les sens, du moment que la fonction func s'exécute, ke.consume devrait se faire... non ?
Merci par avance de votre aide en tout cas...
Partager