【问题标题】:Truly Interactive command-line真正的交互式命令行
【发布时间】:2012-09-13 10:30:19
【问题描述】:

在 Java 中是否有可能在“按下时”获取用户按下的内容 而不是在他击中返回时?

因此,例如,如果用户点击 ABC 然后点击 Ctrl+Z 我希望程序在那里结束 (到达流的结尾)而不是,之后,当他按下返回时。

【问题讨论】:

标签: java


【解决方案1】:

当您按下 Ctrl+Z 时,Windows 实际上并没有结束流;您可以继续编辑该行,当您按 Return 时,应用程序只会看到流的结尾。

这与 Unix 略有不同,其中 Ctrl+D 会将当前缓冲的行发送到应用程序(没有换行符),应用程序只会感知在 Return 或另一个 Ctrl+ 之后按 Ctrl+D 发送空缓冲区时的流D.

编辑:在 Windows 上,您也许可以使用 SetConsoleMode 函数来读取单个字符。我不确定你会怎么称呼它;似乎有三个选择:

  1. 通过 JNI 到调用 SetConsoleMode 的 DLL
  2. 调用调用 SetConsoleMode 的程序
  3. 将您的程序包装在调用 SetConsoleMode 的启动器中
  4. 编辑:使用 JNA 调用 SetConsoleMode。

【讨论】:

  • 是的。谢谢,但你只回答了我问题的一部分。那么Java不可能在按下时检测到一个键?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 2012-07-12
  • 2010-09-27
相关资源
最近更新 更多