Je sais comment mettre en œuvre un auditeur clé; Ce n'est pas le problème.
public void keyTyped(KeyEvent event) { if (event.getKeyChar() == KEY_LEFT) { cTDirection = LEFT; } if (event.getKeyChar() == 40) { cTDirection = DOWN; } if (event.getKeyChar() == 39) { cTDirection = RIGHT; } if (event.getKeyChar() == 38) { cTDirection = UP; } }
7 Réponses :
En outre, vous devez utiliser keyevent.vk_left code>,
keevent.vk_right code>, etc. p>
getkeycode code>, pas
getkeychar code>.
getkeychar code> est destiné aux clés qui correspondent réellement à des caractères (lettres, chiffres, espaces, etc.). P>
Je veux juste les touches fléchées régulières ... qui n'affecte pas mes flèches!
@user - oui il fait b> affecte les touches fléchées.
@ user516664 qui est le code pour les touches fléchées "régulières". Peut-être que vous voulez les flèches de clavier numériques à la place, auquel cas utilisez vk_kp_left code>, etc. Si cela ne fonctionne toujours pas, dites-nous ce que
getkeycode code> retourne pour votre "flèche ordinaire clés".
En fait, j'ai vu un exemple qui a travaillé avec vk_left et tout travaille, mais ce n'était pas pour moi - il revenait 37 pensée 40 dans l'ordre à gauche en haut juste vers le bas
@ user516664: uh ... vk_left = 37, vk_up = 38, vk_right = 39, vk_down = 40. Voir le tableau ici: télécharger.oracle.com/javase/6/docs/api/...
Utilisez le getkeycode () code>
méthode et comparez la valeur renvoyée à nouveau keevent.vk_left code>,
keevent.vk_right code>,
keyevent.vk_up < / code> et
keyevent.vk_down code> constantes. p>
Je veux juste les touches fléchées régulières ... qui n'affecte pas mes flèches!
Je recommanderais d'utiliser: répéter avec Il existe des codes séparés pour le clavier numérique: voir KeyEvent pour tous les codes. P> P> vk_down, vk_left, vk_right code>. p>
vk_kp_up, vk_kp_down, vk_kp_left, vk_kp_right code> si vous en avez besoin. p>
Je veux juste les touches fléchées régulières ... qui n'affecte pas mes flèches!
Ce sont les codes des «touches fléchées régulières». Si vous rencontrez toujours des problèmes, je vous suggère de poster plus de votre code parce que vous avez un problème ailleurs.
Utilisez
if ( e.getKeyCode() == KeyEvent.VK_LEFT){ //Do something }
Je veux juste les touches fléchées régulières ... qui n'affecte pas mes flèches!
Voici ce que j'ai fait pour le faire fonctionner:
public void keyPressed (KeyEvent e) { int c = e.getKeyCode (); if (c==KeyEvent.VK_UP) { b.y--; } else if(c==KeyEvent.VK_DOWN) { b.y++; } else if(c==KeyEvent.VK_LEFT) { b.x--; } else if(c==KeyEvent.VK_RIGHT) { b.x++; } System.out.println (b.x); b.repaint (); }
S'il vous plaît, n'utilisez pas de marque aléatoire sur laquelle vous avez vu ailleurs. Utilisez les boutons présentés dans la barre d'outils de la zone d'édition et la lecture, comment formater votre code et votre texte, en commençant par la FAQ. Merci et bienvenue.
BTW dans KeyAdapter -> KeyTyped GetChatRarcode () n'a pas fonctionné Vous devriez essayer Keyrimprimé ou KeyReleased P>
PREMIER DÉCLARCARE INIT MÉTHODE
class keyb implements KeyListener{ public void keyPressed (KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_UP){ y-=50; }else if(e.getKeyCode()==KeyEvent.VK_DOWN){ y+=50; }else if(e.getKeyCode()==KeyEvent.VK_RIGHT){ x+=50; }else if(e.getKeyCode()==KeyEvent.VK_LEFT){ x-=50; } repaint(); } public void keyReleased (KeyEvent e){} public void keyTyped (KeyEvent e){} }
Cela devrait avoir "AWT" dans l'étiquette de liste ou dans le titre.