2015-12-25 26 views
2

我想做一個在後臺運行的熱鍵程序,我不知道如何讓它檢查何時按下某個鍵(在這種情況下是減號鍵)。我需要程序等待一個鍵被按下,然後程序檢查這個鍵是否是減號鍵。在Java中,我該如何檢查用戶是否按下某個鍵?

我現在使用僞代碼的程序的一個例子就是沿着這些線的某處。

while(true) 
    { 
     int pressedKey = userInputedKey; 
     if(pressedKey == KeyEvent.VK_MINUS) 
     { 
      //action to be executed 
     } 
    } 

我已經找到了很多建議對其他線程使用的KeyListener,但我可能無法正常使用它來,所以如果你的反應是使用的KeyListener請解釋如何充分利用它(準確的說我不不明白當一個KeyEvent被實例化的時候,它已經輸入了作爲該KeyEvent中keyCode的任何鍵的輸入,所以如果我在調用KeyListener時使用它,我將不會得到正確的結果)。當然,我不太瞭解KeyEvent或KeyListener,所以我可能沒有嘗試通過使用KeyListener來解決我的問題。

+0

請參閱到[如何檢查用戶是否按下某個鍵?](http://stackoverflow.com/questions/18037576/how-do-i-check-if-the-user-is-pressing-a-key)或者 [如何檢測一個鍵是否在Java中按?](http://stackoverflow.com/questions/23841127/how-to-detect-if-a-key-was-pressed-in-java) –

+0

如何我要檢查用戶是否按下關鍵?是我一直用來解決我的問題的線索之一,儘管最重要的答案並未解決他的問題(如提問者的評論所示)。 – loserlobster

+0

某些東西必須攔截關鍵事件,並且必須有焦點,所以它不能在後臺運行。想象一下,你有5個程序打開,你把重點放在一個。你不能擁有全部5個攔截關鍵事件,只有一個焦點。 – user1803551

回答

1

您可以使用KeyEvent來獲取密鑰代碼,然後檢查它。

如:

someCompunent.addKeyListener(new KeyAdapter() { 
    public void keyPressed(KeyEvent e) { 
     if(e.getKeyCode() == KeyEvent.VK_MINUS) { 
      // do the stuff 
     } 
    } 
}); 
+0

用我現在設計的程序的方式,我沒有addKeyListener()組件。所示的程序幾乎是我目前所有的代碼。我應該使用哪個組件,還是應該使用它? – loserlobster

+0

它是一個JFrame嗎? –

+0

不,我試圖讓它作爲後臺進程運行,以便它可以在所有程序上運行。 – loserlobster

1

如果你想使用全局熱鍵,當程序捕捉按鍵事件在任何應用程序 - 嘗試使用JKeyMaster library(支持Windows,Linux和MAC OS全球hotkweys)

相關問題