按下键盘上的某个键时结束程序

时间:2014-03-11 23:55:03

标签: java swing keyboard keyevent keyboard-hook

我希望能够在按下某个键时结束我的程序(对于这个例子,我们会说当按下k时)。我知道这可以通过使用JFrameKeyListener完成,但希望我的监听器能够在后台运行。我的程序当前修改了word文档,这意味着活动窗口不会是JFrame,因此它不会记录按下的键。同样bufferd readers不是前面提到的选项,正在运行的java程序不是选定的窗口。我花了很多时间研究不同的方法,但我发现的是用AWTEvents

来查看鼠标是否被按下的方法

在最糟糕的情况下,我会检查是否按下第二个鼠标按钮然后结束我的代码,但理想情况下我想在按下的键上结束它。任何帮助都会很棒,评论任何澄清。

4 个答案:

答案 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