2010-09-03 98 views
4

我正在用Java編寫控制檯應用程序。它類似於聊天客戶端:輸入和輸出是異步創建的。問題是,如果在用戶處於打字過程中進行某些輸出時,線條會混淆在屏幕上。在Java控制檯應用程序中保持輸入/輸出分離

我正在尋找一個解決方案,它允許我有一個輸出區域與輸出區域分開。此刻我正在使用一個額外的線程輪詢System.in上的BufferedReader。

該程序需要在Linux服務器上運行,並通過ssh會話進行訪問。因此,只有在這種環境下才能使用的提示都很好。

是否有任何高級庫可以做到這一點?或者是否有使用終端/ ANSI代碼的巧妙技巧? ANSI代碼(保存遊標)和r(恢復遊標)可能會有所幫助,但我如何知道在哪裏跳轉以執行輸出,以及如何處理滾動?

回答

2

我記得很久以前在C++中使用過類似的東西。然後我正在使用ncurses庫。看看javacurses這似乎是類似ncurses的Java實現。

+0

雖然我喜歡圖書館由於懷舊。它有它的耀斑。但它是一個完整的小部件庫。您可以使用任何小部件庫(例如AWT,SWT)併爲此設置兩個文本區域。如果沒有關於如何分離進出的簡短片段,我沒有看到使用jcurses的要點 – benez 2015-09-04 10:08:43

+1

@kewlbfy OP需要一個在終端中工作的解決方案。你提到的小部件庫不適用於這種情況 – 2015-09-05 16:41:22

1

聽起來像你需要使用詛咒。 JCurses是一個Curses庫的Java實現,可以讓你控制終端以允許滾動,定位等。

相關問題