[java] désactiver l'autorepeat du KeyPressed

Bonjour,

Je suis entrain de construire une interface utilisateur en Java (sous Eclipse) avec interaction par les touches du clavier.

Or lorsqu'on applique un KeyListener sur une JFrame, un "autorepeat" est appliqué à la fonction KeyPressed, c'est-à-dire:
- Si on appuie sur une touche du clavier, KeyPressed est lancé une première fois.
- Si on maintient cette touche enfoncée, KeyPressed continue à être appelé en continu, jusqu'à ce qu'on relache la touche (on obtient alors un KeyReleased).

Je cherche en quelque sorte à désactiver l'autorepeat de KeyPressed:
Je voudrais que si j'appuie et reste appuyé sur la touche 'A', KeyPressed ne soit déclenchée qu'une seule fois.

Avez-vous une idée là-dessus ?
Merci !

je continue à creuser !
Configuration: Windows XP
Firefox 2.0.0.10

1 réponse

  1. Bonjour,

    j'ai le même probleme et ma solution est d'utiliser keyReleased(KeyEvent e).

    Le principe: quand tu detecte un keypressed, tu pass un booleen a "TRUE".
    Quand ce boolen est "TRUE" tu ne fais pas ton action.

    Quand tu detecte le key released, tu passe le bolléen à "FALSE".

    C'est un peu fastidieux et peut etr pas approrié a ton cas.

    Bon courage,
    Synn
    1. Merci beaucoup
      c'est la méthode que j'ai finalement employée.
      j'ai appris aussi que ce comportement dépend de l'OS: sous windows il y a répétition, mais pas forcément sous d'autres OS... mais bon avec notre booléen au moins on est sûrs que ça marche partout.