Sensibilité du clavier inférieure dans java keyhandler?
private class KeyHandler implements KeyEventDispatcher{
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
tetrominoList.get(currentPiece).moveRight();
}else if(e.getKeyCode() == KeyEvent.VK_LEFT){
tetrominoList.get(currentPiece).moveLeft();
}else if (e.getKeyCode() == KeyEvent.VK_UP){
System.out.print("k");
tetrominoList.get(currentPiece).rotate();
}
return false;
}
Ce code renvoie "kk" lorsque j'appuie une fois sur la flèche vers le haut. Comment puis-je configurer java ou mon ordinateur pour qu'il n'enregistre qu'une touche au lieu de deux?
EDIT: C'est ma solution temporaire
private class KeyHandler implements KeyEventDispatcher{
int counter = 0;
public boolean dispatchKeyEvent(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_RIGHT){
tetrominoList.get(currentPiece).moveRight();
}else if(e.getKeyCode() == KeyEvent.VK_LEFT){
tetrominoList.get(currentPiece).moveLeft();
}else if (e.getKeyCode() == KeyEvent.VK_UP){
counter++;
if(counter == 2){
System.out.print("k");
tetrominoList.get(currentPiece).rotate();
counter = 0;
}
}
0
Author: Andrew Thompson, 2013-05-18
1 answers
Je peux me tromper mais il semble que votre code traite à la fois les événements KEY_PRESSED
et KEY_RELEASED
. Vous devriez probablement vérifier un événement KEY_TYPED
et une fois que cela se produit, imprimez votre lettre. Sinon, vous ne pouvez traiter qu'un seul des deux premiers événements.
1
Author: svz, 2013-05-18 19:32:11