Pregunta

Buenas, todo,

Después de aprender aquí que la consola de Java no soporta la entrada de teclado mucho, cambié a Swing y AWT. Mi problema ahora es cómo detectar cuando se utilizan las teclas de dirección del teclado (teclado no numérico). Mi código (abajo) no hace más que imprimir un carácter "pequeña caja" al pulsar el arriba, abajo, izquierda, derecha teclas. Este pequeño carácter de cuadro no es diferente de la de caracteres que utiliza las teclas Ctrl y Alt, por ejemplo. ¿Alguien sabe cuál es la identidad de las teclas de dirección del teclado en realidad es para que pueda codificar para ellos en mi solicitud?

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();
    }
}
¿Fue útil?

Solución

Lo que debe hacer es mirar el código de tecla virtual en lugar del carácter fundamental, en keyPressed. De esta manera:

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;
    }
}

http: // java. sun.com/javase/6/docs/api/java/awt/event/KeyEvent.html para obtener información completa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top