2012-10-23 74 views
1

這個簡單的代碼從未在處理工作對我來說:標準與處理(processing.org)

try { 
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
    String str = ""; 
    while (str != null) { 
    System.out.print("> prompt "); 
    str = in.readLine(); 
    println(str); 
    } 
} 
catch (IOException e) { 
} 

大概是因爲控制檯輸出框不能用於輸入,不像在Eclipse。有沒有一個簡單的解決方法,或者我是否被迫像標準的對話框(或keyPressed處理)?

+0

看來你必須通過處理鍵盤事件來做到這一點:http://www.learningprocessing.com/examples/chapter-18/example-18-1/ – madth3

+0

你試圖運行從一個罐子出口命令行,並使用它提供輸入到標準輸入?無論如何,你想在這裏做什麼;任何原因你不能使用eclipse? – ericsoco

回答

1

如果您使用的是Processing IDE,Processing本身不支持此行爲。如果您導出草圖並編輯java文件,或者使用Eclipse, Proclipsing, core.jar等,則可以像訪問任何其他Java應用程序一樣訪問System.in,但是,這會破壞處理的目的,因爲它通常不會從命令運行線和本質上是圖形。

最佳做法是使用按鍵方法捕捉關鍵幀。例如:

String str = ""; 

void keyPressed() { 
    str += key; 
} 

然後在您的draw()循環/方法中,您可以處理str上的文本輸入並將其清除,如果需要的話。

如果您想要更高級的用戶體驗,請使用類似ControlP5's的TextField或TextArea。

+0

謝謝。我一直在使用core.jar和PApplet。他們應該確定這一點。我將其標記爲答案。 – Arcymag

0

您的程序完美運行(我將其命名爲test)並將其作爲Applet導出。我cygwin的測試,以及Windows命令提示符:

$ cd test/applet 
$ java -jar test.jar 

輸出(I輸入 「你好」,然後回車):

prompt> hello 
hello 
prompt> 

我試過真的很快通過ssh Ubuntu的終端上。我有問題讓它連接到x11服務器。考慮:http://en.wikipedia.org/wiki/Xvfb如果這是一個問題。

爲了確認,我能夠運行Library-> Network中包含的SharedCanvasServer示例,其中我添加了一個System.out.println以將調試轉儲到執行終端。

java -cp "core.jar;net.jar;SharedCanvasServer.jar" SharedCanvasServer