2012-06-15 56 views
0

我使用JLine庫來處理控制檯輸入和輸出。JLine庫回聲

Terminal terminal = TerminalFactory.getFlavor(TerminalFactory.Flavor.valueOf("UNIX")); 
terminal.init(); 
terminal.setEchoEnabled(true); 
ConsoleReader console = new ConsoleReader(System.in,System.out); 
int key = console.readCharacter(); 

我使用JLine v2.6。回聲不起作用。上面的代碼有什麼問題?有人可以幫忙嗎?

厭倦了尋找其他圖書館,如JLine。有沒有其他Java庫來處理控制檯輸入?

+1

只是一個想法,如果你「厭倦了尋找其他[s]」,那麼因爲jLine2積極和熱情地維護,爲什麼不爲它做出貢獻呢?杯子對我來說似乎是半滿的。 – earcam

回答

2

JLine使用原生代碼在您運行它的每個平臺上。某些平臺上的某些終端沒有正確的設置,無法正常工作。

由於這些平臺上的本地終端,默認行爲在不同平臺之間有所不同,但是一旦您設置並正確配置,它的工作就會很好。您的問題很可能是您的終端仿真設置,與JLine無關。這就是說,我在OSX(bash),Windows和RHEL/Centos(bash)上取得了巨大的成功。

1

看來ConsoleReaderreadCharacter();不回聲,但readLine()readLine(String prompt)做。

查看console.readCharacter()方法的源代碼,它顯式調用(private)clearEcho(),通過移回指針來清除回顯。

雖然文檔是稍薄,爲的JLine被設計成與GNU 的readLine和BSD editLine兼容的重點似乎是對處理提供控制檯支持。

我會假定提供了字符處理,但是你需要負責回顯字符。