2012-10-28 88 views
0

我希望编写的应用程序非常大,但需要作为服务运行。我计划使用FireDaemon将其转换并作为一项服务运行,但只有在推送特定的密钥之前,它才会无所作为。等待Java按键

我尝试使用DataInputStream和DO/while循环这将等待一个按键,这样的事情:

do { 
    char keyPressed = input.readChar(); 
} while (keyPushed != null); 

System.out.println("You pushed: " + keyPushed); 

没有对这个简单的话题那么多信息,我觉得古怪。在Basic中,我们曾经使用inkey $来等待一个键,Java必须有类似的东西,但我不能把它放在手指上。

任何帮助将是很好的。

谢谢。 鲍勃·格兰特, 宾夕法尼亚

+1

readChar阻塞呼叫。你想拥有它还是想听一个单独的线程按键? –

回答

0

如何:

if (System.in.available() > 0) 
    System.in.read(); 
0

如果我读你的问题正确,你想要你的应用程序在Windows操作系统后台,直到特定的组合键运行中输入 - 例如一个热键。你无法单独使用Java来完成这项工作,但sdk并没有提供这样的接口。你将需要在C中编写一个辅助程序,并使用JNI作为桥梁。

这篇文章应该会帮你一下 - Global hotkeys for Java applications under Windows OS