2009-03-05 1 views

risposta

69
public void keyPressed(KeyEvent e) { 
    int keyCode = e.getKeyCode(); 
    switch(keyCode) { 
     case KeyEvent.VK_UP: 
      // handle up 
      break; 
     case KeyEvent.VK_DOWN: 
      // handle down 
      break; 
     case KeyEvent.VK_LEFT: 
      // handle left 
      break; 
     case KeyEvent.VK_RIGHT : 
      // handle right 
      break; 
    } 
} 
+0

sostituire KeyEvet con KeyEvent :) – Ricket

0

Se si intende che si desidera allegarlo al pannello (Finestra con cui si sta lavorando).

quindi è necessario creare una classe interna che si estenda dall'interfaccia IKeyListener e quindi aggiunga tale metodo alla classe.

Quindi, allega questa classe al tuo pannello: this.addKeyListener (nuova sottoclasse());

0

Si dovrebbero usare cose come: KeyEvent.VK_UP invece del codice effettivo.

Come si vuole refactoring? Qual è l'obiettivo del refactoring?

+0

ho solo bisogno di sapere che cosa costanti da utilizzare per il controllo di questo, adesso sto confrontando con il valore numerico di 39/37 ecc –

+0

non credo che avrei davvero chiamare che refactoring ... – TofuBeer

6
public void keyPressed(KeyEvent e) { 
    if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 
      //Right arrow key code 
    } else if (e.getKeyCode() == KeyEvent.VK_LEFT) { 
      //Left arrow key code 
    } else if (e.getKeyCode() == KeyEvent.VK_UP) { 
      //Up arrow key code 
    } else if (e.getKeyCode() == KeyEvent.VK_DOWN) { 
      //Down arrow key code 
    } 

    repaint(); 
} 

I codici KeyEvent sono tutti una parte delle API: http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html

+0

codice finale int; code = e.getKeyCode(); switch (code) {} sarà più veloce e altrettanto chiaro. – TofuBeer

6

Giusto per completare la risposta (utilizzando il KeyEvent è la strada da percorrere), ma la freccia è di 38 e freccia giù è 40 così:

else if (e.getKeyCode()==38) 
    { 
      //Up arrow key code 
    } 
    else if (e.getKeyCode()==40) 
    { 
      //down arrow key code 
    } 
+4

+1 per farmi ridere –