2012-09-13 140 views
0

Java中是否有可能获得用户按下“当它按下” 而不是当他点击返回时按下的内容?真正的交互式命令行

因此,举例来说,如果用户打ABC,然后打按Ctrl +ž希望该程序结束还有 (到达流的末尾),而不是之后,当他按下回车键。

+0

可能的重复:http://stackoverflow.com/questions/811851/how-do-i-read-input-character-by-character-in-java? –

+0

您可以创建一个gui应用程序,其中只有行,因此您可以听用户交互。 –

+1

可能的重复[如何从Java控制台读取单个字符(用户键入它)?](http://stackoverflow.com/questions/1066318/how-to-read-a-single-char-从控制台在Java中作为用户类型它) – Neil

回答

3

Windows按下时并不实际结束流Ctrl + Z;您可以继续编辑该行,并且当您按返回时,应用程序将只能看到流的结尾。

这是Unix的稍有不同,其中Ctrl键 + d将发送当前缓冲的线到应用程序(不换行),并当通过发送一个空缓存器中的应用程序将只感知流的末尾按压Ctrl键 + d任后返回或陆续Ctrl键 + d

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

  1. 通过JNI,以调用SetConsoleMode
  2. 调用,调用SetConsoleMode
  3. 在调用SetConsoleMode
  4. 编辑的启动包装你的程序的程序DLL:用JNA致电SetConsoleMode。
+0

是的。谢谢,但你只回答我的问题的一部分。所以在Java被按下时不能检测到一个键? – xdevel2000