2012-09-13 190 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