2012-09-30 2 views
2

자바 프로그램에서 키보드 단축키를 만드는 데 도움이 필요합니다. 아래에있는 내 코드에서 볼 수 있듯이, 나는 "test2"를 인쇄하지 않습니다 Ctrl 키 + T 제대로 작동 및 인쇄 "test"하는 키보드 단축키,하지만 바로 가기 Ctrl 키 + 시프트 + T이 필요합니다 예상대로 아무 일도 발생하지 않습니다 : InputEvent3 키 키보드 단축키

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
    new KeyEventDispatcher() { 
     public boolean dispatchKeyEvent(KeyEvent e) { 
      switch (e.getID()) { 
       case KeyEvent.KEY_PRESSED: 
        if (e.getKeyCode() == java.awt.event.KeyEvent.VK_T && 
         e.getModifiers() == java.awt.event.InputEvent.CTRL_MASK) { 
         System.out.print("test"); 
        } else if (e.getKeyCode() == java.awt.event.KeyEvent.VK_R && 
           e.getModifiers() == java.awt.event.InputEvent.CTRL_MASK && 
           e.getModifiers() == java.awt.event.InputEvent.SHIFT_MASK) { 
         System.out.print("test2"); 
        }  
       break; 
      } 
      return true; 
     } 
    } 
); 
+0

당신의 (a 키 입력을 봤어 http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/KeyStroke을 :하지만 단순한 접근 방식은 InputEventis*Down() 방법을 사용하는 것입니다 .html) – Coupon22

답변

5

수정자는 비트 필드, 그래서 당신은 단순히 ==를, 비트 연산을 사용하여 테스트하지.

if (e.getKeyCode() == java.awt.event.KeyEvent.VK_R && 
    e.isControlDown() && e.isShiftDown()) { 
+0

완벽한, 감사합니다. 나중에 참조 할 수 있도록 Ctrl + r + t 키보드 바로 가기를 원한다면 어떻게해야합니까? – dannyn382

+0

동시에 두 개 이상의 비 수정 자 키를 나타내는 단일 입력 이벤트를 가질 수 있는지 여부를 알 수 없습니다. 죄송합니다 ... –

+0

걱정하지 마시고 모든 도움을 부탁드립니다! 단 – dannyn382