2012-11-25 62 views
2

我在寫小圖形編輯器,我想趕上事件,當我按下Ctrl + A如何使用KeyEvent的

我用這樣的代碼(這是測試版):

@Override 
public void keyPressed(KeyEvent e) { 
    System.out.println("Press"); 
    switch (e.getKeyCode()){ 
     case KeyEvent.VK_A : 
      System.out.println("A"); 
      break; 
    } 
} 

,但我不「知道如何捕捉Ctrl + A鍵

我tryed像這樣

case KeyEvent.VK_CONTROL+KeyEvent.VK_A : 
     System.out.println("A+CTRL"); 
     break; 

但是這個代碼KeyEvent.VK_CONTROL+KeyEvent.VK_A回報我NT也許再組合鍵返回相同數量的

所以能有人能幫助我

+2

請參閱http://stackoverflow.com/questions/5970765/java-detect-ctrlx-key-combination-on-a-jtree – Reimeus

+1

然後選擇[*鍵綁定*](http://docs.oracle.com/javase /tutorial/uiswing/misc/keybinding.html)。 – trashgod

+0

我強烈建議第二@ trashgod的建議。這不是KeyListener的地方,而是用於鍵綁定。 –

回答

4

你可以用isControlDown()方法:

switch (e.getKeyCode()) 
{ 
     case KeyEvent.VK_A : 
      if(e.isControlDown()) 
       System.out.println("A and Ctrl are pressed."); 
      else 
       System.out.println("Only A is pressed"); 
      break; 
     ... 
} 
+0

謝謝。這正是我需要的 –

3

試試這個.....

f.addKeyListener(new KeyListener() { 

     @Override 
     public void keyTyped(KeyEvent e) { 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
      if ((e.getKeyCode() == KeyEvent.VK_A) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) { 
       System.out.println("woot!"); 
      } 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
     } 
    });