天儿真好全部

学习上这里说的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();
    }
}
有帮助吗?

解决方案

你应该做的是看的虚拟键代码的而不是关键角色,在keyPressed。像这样:

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 获得充分的信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top