我希望能够在按下某个键时结束我的程序(对于这个例子,我们会说当按下k时)。我知道这可以通过使用JFrame
和KeyListener
完成,但希望我的监听器能够在后台运行。我的程序当前修改了word文档,这意味着活动窗口不会是JFrame
,因此它不会记录按下的键。同样bufferd readers
不是前面提到的选项,正在运行的java程序不是选定的窗口。我花了很多时间研究不同的方法,但我发现的是用AWTEvents
在最糟糕的情况下,我会检查是否按下第二个鼠标按钮然后结束我的代码,但理想情况下我想在按下的键上结束它。任何帮助都会很棒,评论任何澄清。
答案 0 :(得分:3)
......我知道这可以通过使用JFrame和KeyListener
来完成
不,你几乎不会将KeyListener添加到JFrame,或者在Swing GUI中使用KeyListener,即使你想在活动的GUI中监听击键。
但希望我的听众能够在后台运行。
然后你正在寻找一个键记录器,并且需要挂钩键盘输入,这是普通的核心Java无法完成的。
我这样做的最简单方法是使用其他语言,例如AutoIt脚本语言(如果这是Windows),然后让我的AutoIt通过标准输入和输出套接字通知我的Java程序。
更困难的解决方案(对我来说)是使用C或C ++编写自己的键盘钩子,然后通过JNI或JNA将其链接到Java。无论如何,任何解决方案都必须依赖于平台。
答案 1 :(得分:3)
我同意气垫船在这里.. 如果可能,尝试使用AutoIt .. 你可以创建一个等待某个按键的脚本,然后直接通过AutoIt关闭你的java程序..
要检测按键,您可以查看this page .. 并关闭您的Java程序,您可以使用Java程序窗口中的关闭按钮自动单击..查看this page ..
希望它有所帮助..答案 2 :(得分:0)
我的建议是使用Auto Hot Key来管理java程序:
Run java.exe MyClass ,,,javaPID
^!k::Process, Close, %javaPID%
这将在程序运行时启动程序,并在按Ctrl-Alt-K
时将其关闭答案 3 :(得分:0)
if(new Scanner(new InputStreamReader(System.in)).nextLine().length()>0)
{
System.exit(0);
}
您可以使用它来终止您按键盘上的核心Java Pragram