2012-02-16 67 views
2

是否有任何解決方案對應於該主題的問題。如果我按例如Windows鍵+空格,我得到:「Windows鍵」+「其他鍵」 - Java不檢測「其他鍵」

的keyTyped:WINDOWS

我想這應該是:

的keyTyped:WINDOWS
的keyTyped:空間
的keyReleased:WINDOWS
keyReleased:Space

我的代碼:

 <Java component>.addKeyListener(new KeyListener() { 

     @Override 
     public void keyTyped(KeyEvent e) { 
      e.consume(); 
     } 

     @Override 
     public void keyPressed(KeyEvent e) { 
      System.out.println("keyTyped: " + KeyEvent.getKeyText(e.getKeyCode())); 
      e.consume(); 
     } 

     @Override 
     public void keyReleased(KeyEvent e) { 
      System.out.println("keyReleased: " + KeyEvent.getKeyText(e.getKeyCode())); 
      e.consume(); 
     } 
    }); 

謝謝!

回答

4

WINDOWS + Space是Windows系統的有效全局熱鍵,因此不通知你的程序(而且永遠不會。)檢測到第一個行程,因爲WINDOWS鍵不是熱鍵(且僅展現在釋放後開始菜單)。這也是你沒有獲得發行版的原因。

我不知道如果Java允許系統範圍的鉤子,但你可能不得不與JNI混淆,我認爲你不想處理。

+0

我認識JNA。但是,我不能寫任何與事件/鉤子相關的工作代碼。 – peter 2012-02-16 15:08:48