2015-04-23 68 views
0

我正在嘗試創建一個java swing應用程序,其中我想使用兩個文本框用於輸入和其他輸出過程。 當我點擊按鈕我想在輸入文本框中運行代碼,輸出應該在輸出文本框中。我可以創建可以運行其他Java程序的Java GUI應用程序嗎?

我嘗試使用流程構建器。我使用進程生成器打開cmd並在其中運行程序。如果程序只有打印行,它可以正常工作。但是如果程序要求輸入,則它不起作用。

我們可以在eclipse IDE中執行程序在控制檯窗口中運行並且我們可以在那個時候給出輸入。

然後,我將輸入程序jar文件,並嘗試運行它 代碼:

String demo = "javaw -jar D:\\x.jar";    
Process proc = Runtime.getRuntime().exec(demo); 
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
String f; 

while((f=br.readLine()) != null) 
{ 
    System.out.println(f); 
} 

proc.waitFor(); 
br.close(); 

或者有另一種方式,而無需使用CMD PLZ告訴我。 我該如何爲它編寫適當的代碼?

+0

請告訴我們,你已經嘗試過的東西,我們不能寫的代碼爲你。你應該先嚐試一下,然後當你被困在某個地方時再回來。 – Jordumus

+0

在cmd中失敗後,我將程序轉換成jar文件,然後運行它。代碼是: – Dhaval

+0

可能的重複http://stackoverflow.com/questions/564759/how-to-redirect-all-console-output-to-a-gui-textbox – Amirag

回答

2

是的,還有另外一種方法。

不完全確定你正在努力達到什麼目的,爲什麼第二個進程解析輸入並使第一個結果可用?

如果您在同一個應用程序中不需要此父級子進程關係,那麼您可能還有兩個與套接字通信的不同進程。

你能避免(也應該)運行 - 閱讀更多關於這一點:

http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html

的替代方法:

//你需要傳遞的java: 「java.exe的」, 「-cp」,「bin」,「package.class」)

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2") 

您可以通過環境變量傳遞值,它們可以通過名稱訪問子進程。

Map<String, String> environementVariable = processBuilder.environment(); 
environementVariable.put("parameters", "value"); 

您可以像這樣訪問他們:

Map<String, String> env = System.getenv(); 

啓動過程:

Process process = processBuilder.start(); 
相關問題