Je développe un jeu vidéo basé sur Java Swing. J'ai un problème avec la détection des frappes - les touches 'A' (déplacer vers la gauche) et 'D' (se déplacer vers la droite), où il semble presque qu'elles ne tirent pas (mais arrive rarement). Presque comme s'ils étaient devenus non enregistrés. Maintenant, j'ai des fichiers journaux d'installation pour capturer les événements du clavier, et de nouveau l'un des keyHandlers à un moment donné ne se déclenche pas. Maintenant, quand cela se produit, si je clique dans l'écran principal du jeu avec ma souris, le keyHandler qui s'est perdu d'une manière ou d'une autre semble fonctionner à nouveau. Presque comme si le "Focus" avait été transféré par inadvertance à un autre widget dans le jeu.Java Swing Key Handlers ne fonctionne pas sporadiquement
Voici le code pour configurer les Plans d'action:
topStatusPanel.getInputMap().put(KeyStroke.getKeyStroke("pressed A"),
"aCharKeyPressed");
topStatusPanel.getActionMap().put("aCharKeyPressed", aKeyActionPressed);
topStatusPanel.getInputMap().put(KeyStroke.getKeyStroke("released A"),
"aCharKeyReleased");
topStatusPanel.getActionMap().put("aCharKeyReleased", aKeyActionReleased);
topStatusPanel.getInputMap().put(KeyStroke.getKeyStroke("pressed D"),
"dCharKeyPressed");
topStatusPanel.getActionMap().put("dCharKeyPressed", dKeyActionPressed);
topStatusPanel.getInputMap().put(KeyStroke.getKeyStroke("released D"),
"dCharKeyReleased");
topStatusPanel.getActionMap().put("dCharKeyReleased", dKeyActionReleased);
MoveSubLeftActionStart aKeyActionPressed= new MoveSubLeftActionStart();
MoveSubLeftActionStop aKeyActionReleased= new MoveSubLeftActionStop();
MoveSubRightActionStart dKeyActionPressed= newMoveSubRightActionStart();
MoveSubRightActionStop dKeyActionReleased= new MoveSubRightActionStop();
apprécierions vraiment des idées à ce sujet. Existe-t-il un moyen de forcer le focus sur un widget spécifique - devrais-je alors pour chaque autre widget dans le jeu de le mettre à "unfocusable"? Cela pourrait-il être le problème? Appréciez toute aide ici.
Pour une meilleure aide plus tôt, un poster [MCVE] ou [Short, autoportantes correcte Exemple] (http://www.sscce.org/). –
s'il vous plaît lire mon commentaire dans la réponse par Jochen Bedersdorfer – mKorbel