2012-09-30 249 views
2

我需要幫助才能在我的Java程序中創建快捷鍵。正如在我下面的代碼可以看出,我需要有一個鍵盤快捷鍵是按Ctrl + 牛逼其正常工作和打印"test",但快捷按Ctrl + + 牛逼不打印"test2"正如所料,沒有任何反應:3鍵快捷鍵

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

你看着一個的按鍵動作(http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/KeyStroke .html) – Coupon22

回答

5

InputEvent的修飾符是位字段,所以您在使用按位運算測試它們,而不是簡單==。但是,一個更簡單的方法是使用InputEventis*Down()方法:

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

完美,謝謝。爲了將來的參考,如果我想要一個鍵盤快捷鍵是ctrl + r + t我該怎麼做? – dannyn382

+0

我不知道是否有可能同時代表多個非修改鍵的單個輸入事件,對不起... –

+0

不用擔心,謝謝你的幫助! Dan – dannyn382