teclado keytyped keypressed eventos entre diferencia java swing keyboard key direction

keytyped - keyevent java



Detectando las teclas de dirección del teclado usando keyPressed (1)

Lo que debes hacer es mirar el código de la tecla virtual en lugar del carácter clave, en la tecla keyPressed . Al igual que:

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

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

Todos los días,

Después de saber aquí que la consola Java no admite una gran cantidad de entradas de teclado, cambié a Swing y AWT. Mi problema ahora es cómo detectar cuándo se usan las teclas de dirección del teclado (teclado numérico no numérico). Mi código (a continuación) no hace más que imprimir un carácter de "caja pequeña" al presionar las teclas hacia abajo, arriba, izquierda, derecha. Este pequeño carácter de cuadro no es diferente del carácter utilizado por las teclas CTRL y ALT, por ejemplo. ¿Alguien sabe cuál es la identidad de las teclas de dirección del teclado en realidad para poder codificarlas en mi aplicación?

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