2015-12-25 28 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)

相关问题