【问题标题】:Java is there a way to see if a key was press without blocking?Java有没有办法查看一个键是否被按下而不阻塞?
【发布时间】:2012-04-14 13:50:11
【问题描述】:

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

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

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

【问题讨论】:

标签: java


【解决方案1】:

您的选择是:

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

    查看上一个答案here中的代码示例。

  • 在你的程序中创建单独的线程等待回车键按下,然后通知主循环线程结束。

  • 使用原生库,例如 jInputjLine(或使用 jni/jna 编写您自己的更简单的等效项)。

    这使您可以连接到本机操作系统的异步键处理,尽管即便如此,通常也会对首先安装的窗口系统产生微妙的依赖关系。

【讨论】:

  • 嗨,这看起来很复杂,没有办法简单地查看一个键是否按下??????
  • 我同意它看起来过于复杂,但在 Java 控制台应用程序中就是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 2012-01-27
  • 1970-01-01
  • 2011-02-15
  • 2018-06-26
  • 1970-01-01
相关资源
最近更新 更多