Java是否有办法查看密钥是否按下而没有阻塞?

时间:2012-04-14 13:50:12

标签: java

我有一个机器人程序来测试我的服务器。如果按任何键,我希望它退出循环,但不要让它停止并等到按键被按下。因此,循环将继续运行,直到键盘上的任何键被按下。

这就是我现在尝试这样做的方法,但不起作用

        if (System.in.available()>0)
        {
            System.out.println("key pressed");
            break; // exit loop
        }

1 个答案:

答案 0 :(得分:1)

您的选择是:

  • 创建GUI窗口。您可以通过键事件监听器从awt / swing窗口接收异步键事件。

    请参阅上一个回答here中的代码示例。

  • 在程序中创建单独的线程,等待按下回车键,然后发出主循环线程的信号结束。

  • 使用本地库,如jInputjLine(或使用jni / jna编写您自己的简单等效文件)。

    这允许您挂钩到本机操作系统的异步键处理,尽管如此,首先存在对窗口系统的微妙依赖。