2017-05-22 15 views
2

를 눌렀습니다. 이유를 찾을 수 없습니다. 우리는 CTRL 키를 눌렀을 때 keyPressed 메서드를 사용할 수 있습니까?잘못된 키 코드는 I 키를 눌러 진 <kbd>CTRL</kbd> + <kbd>O</kbd>을 발사하기 위해 노력하고있어,하지만 난 <code>keyPress</code> 방법에 <code>Invalid key code</code>을 얻을

여기 내 코드입니다 :

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import javax.swing.JFrame; 



public class MainTest extends JFrame{ 


    public static void main(String[] args) throws AWTException { 

     Robot r= new Robot(); 
     r.keyPress(KeyEvent.CTRL_MASK); 
     r.keyPress(KeyEvent.VK_O); 
     MainTest mainF =new MainTest(); 
     mainF.addKeyListener(new KeyListener() { 

      @Override 
      public void keyTyped(KeyEvent e) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void keyReleased(KeyEvent e) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void keyPressed(KeyEvent e) { 
       // TODO Auto-generated method stub 
       if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) { 
        System.out.println("woot!"); 
       } 
      } 
     }); 

    } 
} 
+1

첫 번째'keyPress'에 대해'KeyEvent.VK_CONTROL'을 시도하십시오. – Berger

+1

Thnaks Berger는 나를 위해 잘 작동합니다. 답으로 답을 달 수 있습니다. – Yacino

답변

3

그냥 처음 keyPress에 대한 KeyEvent.VK_CONTROL 대신 KeyEvent.CTRL_MASK를 사용하여이 실제로 제어 키를 누르면됩니다.

r.keyPress(KeyEvent.VK_CONTROL); 
r.keyPress(KeyEvent.VK_O); 
1

당신은 방금 InputEventisControlDown() method를 사용할 수 있습니다. 이벤트로 Ctrl 키가 밀리고 있었는지의 여부를

isControlDown

public boolean isControlDown()

돌아갑니다.

코드는 다음과 같이 표시됩니다

@Override 
public void keyPressed(KeyEvent e) { 
    // TODO Auto-generated method stub 
    if ((e.isControlDown()) { 
       System.out.println("woot!"); 
    } 
} 

당신은 자세한 내용은 this tutorial를 확인할 수 있습니다.