keyPressed를 사용하여 키보드 방향 키 감지하기


1

안녕하세요,

Java 콘솔이 키보드 입력을 많이 지원하지 않는다는 것을 알게 된 후, 저는 Swing과 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(); 
    } 
} 
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을 참조하십시오.

  0

우수. David 고맙습니다. 22 feb. 092009-02-22 01:02:54