keyPressedを使用して、キーボードの方向キーを検出
質問
やあ、すべて、
Javaコンソールは、キーボード入力に多くのことをサポートしていないことをここで学んだ後、私はスイングと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するます。
所属していません StackOverflow