2011-02-10 106 views
2

我想創建一個跨平臺解決方案,用於訪問Java中Process的輸入,錯誤和輸出流。Java中的命令行界面

基本上,我要創建的是顯示進程輸出和錯誤流的文本區域,並允許您向輸入流提供數據。換句話說,幾乎Eclipse在運行應用程序時已經提供了它的控制檯。

現在,這個的基本實現很簡單,我只需將所有按鍵發送到輸入流。但是,當然,我遇到了粘貼,退格鍵和箭頭鍵,處理ctrl-C等問題。

在將數據發送到進程的輸入流之前,似乎應該等待。但是等什麼?我應該在每個返回鍵上發送所有輸入(和粘貼)的文本嗎?或者在間隔後?那麼ctrl-C,ctrl-X等等。我是否將箭頭鍵移動到輸入流?

+0

你用粘貼,退格鍵等得到了什麼問題?我認爲你重定向關鍵事件的組件也應該處理所有事件。所以,如果有事情沒有發生,如果你願意,我會看看你是否使用正確的組件。 – 2011-02-10 12:36:01

+0

當某人粘貼某物時,該組件會收到一個ctrl + V事件,但比文本區域中添加的要多得多。這也可以檢測到,但是我什麼時候將它發送到輸入流?馬上?但是如果有人粘貼某些東西,幾次後退然後返回? – 2011-02-10 12:49:18

回答

0

您不應該等待任何事情,只需發送 - 但發送一個單獨的線程,而不是您的GUI-事件線程,所以後者不會阻塞。

對於處理特殊字符,看看當這些標誌輸入到文本控制檯時你會得到什麼。

1

最簡單和最用戶友好的解決方案是有一個「發送」按鈕,發送文本區域的全部內容並清除它。認爲即時通訊應用程序或SO評論編輯器。