Java 使用按键检测键盘方向键

Java 使用按键检测键盘方向键,java,swing,keyboard,key,direction,Java,Swing,Keyboard,Key,Direction,一整天 在这里了解到Java控制台不太支持键盘输入后,我转而使用Swing和AWT。我现在的问题是如何检测何时使用键盘方向键(非数字键盘)。我的代码(如下)只在按下下、上、左、右键时打印“小方框”字符。例如,这个小方框字符与CTRL键和ALT键使用的字符没有什么不同。是否有人知道键盘方向键的实际身份,以便我可以在应用程序中为其编码 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Key

一整天

在这里了解到Java控制台不太支持键盘输入后,我转而使用Swing和AWT。我现在的问题是如何检测何时使用键盘方向键(非数字键盘)。我的代码(如下)只在按下下、上、左、右键时打印“小方框”字符。例如,这个小方框字符与CTRL键和ALT键使用的字符没有什么不同。是否有人知道键盘方向键的实际身份,以便我可以在应用程序中为其编码

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

您应该做的是在
按键
中查看虚拟按键代码,而不是按键字符。像这样:

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

有关完整信息,请参阅。

非常好。谢谢大卫,非常感谢。