Keypressed를 사용하여 키보드 방향 키 감지
문제
g'day 모두,
여기에서 Java 콘솔이 키보드 입력을 많이 지원하지 않는다는 것을 알게 된 후 Swing and Awt로 전환했습니다. 내 문제는 이제 키보드 방향 키 (숫자가 아닌 키패드)가 사용되는 시점을 감지하는 방법입니다. 내 코드 (아래)는 아래쪽, 위, 왼쪽, 오른쪽 키를 누를 때 "작은 상자"문자를 인쇄하는 것 이상을 수행하지 않습니다. 이 작은 상자 문자는 예를 들어 CTRL 및 ALT 키가 사용하는 문자와 다르지 않습니다. 키보드 방향 키의 ID가 실제로 무엇인지 아는 사람이 있습니까?
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