2009-02-21 6 views
1

G'day tout,clés de détection de direction du clavier en utilisant keyPressed

Après avoir appris ici que la console Java ne prend pas en charge l'entrée du clavier beaucoup, je suis passé au Swing et AWT. Mon problème maintenant est de savoir comment détecter quand les touches de direction du clavier (clavier non numérique) sont utilisées. Mon code (ci-dessous) ne fait qu'imprimer un caractère "petite boîte" en appuyant sur les touches bas, haut, gauche, droite. Ce petit caractère de boîte n'est pas différent du caractère utilisé par les touches CTRL et ALT, par exemple. Est-ce que quelqu'un sait quelle est l'identité des touches de direction du clavier pour que je puisse les coder dans mon application?

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class KeyChecker extends JFrame { 
    JLabel keyLabel = new JLabel("Hit any key"); 

    public KeyChecker() { 
     super("Hit a Key"); 
     setSize(300, 200); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLayout(new FlowLayout(FlowLayout.CENTER)); 
     KeyMonitor monitor = new KeyMonitor(this); 
     setFocusable(true); 
     addKeyListener(monitor); 
     add(keyLabel); 
     setVisible(true); 
    } 

    public static void main(String[] arguments) { 
     new KeyChecker(); 
    } 
} 

class KeyMonitor extends KeyAdapter { 
    KeyChecker display; 

    KeyMonitor(KeyChecker display) { 
     this.display = display; 
    } 

    public void keyPressed(KeyEvent event) { 
     display.keyLabel.setText("" + event.getKeyChar()); 
     display.repaint(); 
    } 
} 

Répondre

2

Ce que vous devez faire est de regarder le code de touche virtuelle plutôt que le personnage principal, dans keyPressed. Comme ceci:

public void keyPressed(KeyEvent event) { 
    switch (event.getKeyCode()) { 
     case KeyEvent.VK_UP: 
      // up arrow 
      break; 
     case KeyEvent.VK_DOWN: 
      // down arrow 
      break; 
     case KeyEvent.VK_RIGHT: 
      // right arrow 
      break; 
     case KeyEvent.VK_LEFT: 
      // left arrow 
      break; 
    } 
} 

Voir http://java.sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html pour plus d'informations.

+0

Excellent. Merci David, très apprécié. – elwynn

Questions connexes