G'day all,
在这里了解到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();
}
}
答案 0 :(得分:2)
您应该在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。