hallo Community.
Ich habe eine Gui für eine Consolenanwendung geschrieben. Im Prinzip kann ich mir damit Befehle zusammenklicken und presets speichern. Soweit funktioniert die Anwendung mittlerweile auch ganz gut. einziges manko: Bisher konnte ich die Consolenausgabe über die java console in netbeans überprüfen. allerdings geht das natürlich nicht mehr, sobald das programm autak läuft.
Ich habe mir ein Jtextarea in die Gui gebaut, über das ich die console ausgeben möchte. (andere vorschläge bitte gerne)
die frage ist nun, wie bekomme ich die ausgabe in das jtext area.
hier der Code:
Ich habe eine Gui für eine Consolenanwendung geschrieben. Im Prinzip kann ich mir damit Befehle zusammenklicken und presets speichern. Soweit funktioniert die Anwendung mittlerweile auch ganz gut. einziges manko: Bisher konnte ich die Consolenausgabe über die java console in netbeans überprüfen. allerdings geht das natürlich nicht mehr, sobald das programm autak läuft.
Ich habe mir ein Jtextarea in die Gui gebaut, über das ich die console ausgeben möchte. (andere vorschläge bitte gerne)
die frage ist nun, wie bekomme ich die ausgabe in das jtext area.
hier der Code:
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tradedangerous.ui;
import java.io.*;
/**
*
* @author BechtJu
*/
public class CmdStarter {
public void start(String[] todo) throws IOException, InterruptedException {
Process p;
String[] path = {"path"};
p = Runtime.getRuntime().exec("cmd"); //Start CMD
Config conf = new Config();
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("cd " + conf.getConf("overall",path));//goto trade path in cmd
/*########## Comandshredder now ##########*/
for (int i = 0; i < todo.length; i++) { //for i as long as Array "Todo/Commands" got entries
stdin.println(todo[i]); //type next command of Todo array into cmd
}
/*########## Commandshredder finnished here ##########*/
stdin.println("exit"); //exit commantline so you dont have a waste of cmd processes
stdin.close();
/* Debug
int returnCode = p.waitFor();
System.out.println("Return code = " + returnCode);
//finish debug */
}
}
Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package tradedangerous.ui;
import java.io.*;
/**
*
* @author BechtJu
*/
public class SyncPipe implements Runnable
{
public SyncPipe(InputStream istrm, OutputStream ostrm) {
istrm_ = istrm;
ostrm_ = ostrm;
}
public void run() {
try
{
final byte[] buffer = new byte[1024];
for (int length = 0; (length = istrm_.read(buffer)) != -1; )
{
ostrm_.write(buffer, 0, length);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
private final OutputStream ostrm_;
private final InputStream istrm_;
}