Bonjour,
pour résoudre un autre problème je suis amené à connaitre l'état d'une touche depuis n'importe où dans le programme.
Y'a t-il une solution en utilisant ma classe dérivant du keyAdapter (associée à une Frame)?
Merci bien![]()
Bonjour,
pour résoudre un autre problème je suis amené à connaitre l'état d'une touche depuis n'importe où dans le programme.
Y'a t-il une solution en utilisant ma classe dérivant du keyAdapter (associée à une Frame)?
Merci bien![]()
Tu peus rajouter un boolean isTheKeyDown que tu mets à true dans keyPressed(), et à false dans keyReleased(), par contre je pense qu'il faut que tu ajoute ton keyAdapter à toutes tes fenêtres et boites de dialogue.
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Dans ce cas il est interessant (mais pas forcement plus facile) de mettre en place de placer un unique glasspane transparent sur toute la frame qui se chargerai d'intercepter (puis de propager en dessous de lui) les evenement clavier et de les gerer de la maniere indiquee par le y@m's.
Voir ici pour intercepter le touches du clavier (commenter le addMouseListener() de la classe GlassComponent pour permettre aux evenements souris de traverser le glasspane ; idem pour le setCursor() pour eviter de voir le sablier). Et rajouter un flag pour faire varier l'etat du glasspane (visible/invisible) quand on clique sur le JButton (ou utiliser un JToggleButton a la place). Apres si on commente la ligne consume() l'evenement est forwarde aux composants en dessous.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
aie désoléj'ai oublié de dire que les évènements je les gère, comme vous le dites, avec des booléens.
Le problème se pose lorsque je suis dans une boucle et que je lis les états de toutes les touches à un instant t. Or le temps de lire chaque état, le gestionnaire d'evenements clavier peut changer une des valeurs encore non lue dans la boucle. Ca fausse donc le résultat.
Pour palier à cette erreur je bloque le gestionnaire d'evenement pendant la boucle. Ca amène donc un autre problème : une touche a peut-etre été relachée pendant ce temps et donc le booléen correspondant n'est pas changé. C'est pour ça que je voulais trouver un moyen de connaitre l'état d'une touche (keyUp, keyDown) pour rectifier à la sortie de la boucle l'erreur.
![]()
En espérant que c'est bien expliqué, je vous remercie![]()
Partager