2010-10-06 5 views
2

Ok, tout d'abord. Si je fais System.out.println (e); qui imprime lorsque j'appuie sur la touche. Cependant je ne peux pas pour la vie de moi comprendre comment stocker ceci dans un int. Mon IDE ne me donne aucune erreur si je le fais int press = e.KEY_PRESSED(); ou int pressé = e.getKeyCode(); mais si j'essaie d'imprimer pressé rien ne se passe.Je n'arrive pas à faire fonctionner l'écouteur de KeyEvent

J'ai essayé de faire fonctionner cela pendant des heures et les gestionnaires de Googling KeyEvent et les Javadocs semblent être de peu d'aide à ce sujet.

public void keyPressed(KeyEvent e) { 
    pressed = e.getKeyCode(); 
    System.out.println(pressed); 

}

do{ 
     time = System.currentTimeMillis(); 
     do{ 
      if(pressed == 37||pressed==38||pressed==39||pressed==40){ 
       lastvalid=pressed; 
      } 
     } 
     while(System.currentTimeMillis() < time + speed); 

     switch(lastvalid){ 
      case 37: catarloc.set(0, (Integer)catarloc.get(0)-1); break; 
      case 38: catarloc.set(1, (Integer)catarloc.get(1)-1); break; 
      case 39: catarloc.set(0, (Integer)catarloc.get(0)+1); break; 
      case 40: catarloc.set(1, (Integer)catarloc.get(1)+1); break; 
     } 

     if(Math.random() > .95 || apples < 1){ 
      applearray[(int)(Math.random()*100/2.8)][(int)(Math.random()*100/4)] = true; 
      apples++; 
     } 
     score+=catarloc.size()-1; 
     label.setText("Score  "+ score); 
     mainWindow.repaint(); 
    } 
    while(win == false || lose == false); 
+0

Quelle bibliothèque vous utilisez (Swing/SWT/etc)? –

+1

Pouvez-vous inclure la source pour votre écouteur et l'utilisation de l'événement clé? – Andy

+0

Fait, y compris les parties qui utilisent l'entrée –

Répondre

1

Qu'en est-keyEvent.getKeyCode()? Il renvoie un int. KEY_PRESSED est un membre statique final int sur KeyEvent et représente un événement lorsqu'une touche est enfoncée, et non le code clé réel.

Mise à jour: (Oups) Je vois que vous avez déjà essayé getKeyCode. Que se passe-t-il si vous imprimez getKeyLocation ou getKeyChar?

+0

Évidemment, c'est une chose étrange. J'ai essayé d'obtenir les touches fléchées pour travailler et si je les essaie d'abord aucune entrée de clé est détectée. Je dois essayer une clé normale avant celles que j'essayais. –

1

En fonction du type d'événement:

  • keyEvent.getKeyChar() vous donne le caractère associé à la clé, mais seulement pour KEY_TYPED événements. Sinon, il retourne CHAR_UNDEFINED
  • keyEvent.getKeyCode() vous donne le code de clé virtuelle, mais seulement pour les événements KEY_PRESSED et KEY_RELEASED. Sinon, il renvoie VK_UNDEFINED.
Questions connexes