我正在使用 Java 创建一个 GUI。此 GUI 使用 ProcessBuilder 类从命令行启动程序。
关于正在启动的进程的一些信息:从命令行,它创建另一个窗口并将信息打印到所述窗口。
在我的 GUI 窗口中,我有一个文本区域,我想将所述输出重定向到该区域。我最初打算使用 SwingWorker 对象来不断检查更多输出,而不是阻止 GUI。为了测试并确保我保留了原始语法(甚至没有将 GUI 带入其中),我想我会将辅助进程窗口的输出打印到 System.out。但是,似乎有些问题,因为我可以在辅助进程的窗口中看到输出,但看不到我正在使用的终端。
代码摘录如下:
Process p = pb.start();
Scanner s = new Scanner(p.getInputStream());
SwingWorker pipe = new SwingWorker<String, Void> (){
public String doInBackground(){
while(run){
if(s.hasNextLine()){
System.out.println("S has next!");
System.out.println(s.nextLine());
}
}
return null;
}
};
pipe.execute();
布尔运行在程序的其他地方定义,并在进程 p 退出或强制退出时设置为 false (附加问题:这是一个非常糟糕的主意吗?我觉得它可能是......)。
有没有人知道为什么当我看到它被打印到另一个窗口时我从来没有得到任何输出?最初我的反应是使用 p.getOutputStream() 但 Scanner 没有将 outputStream 作为参数。
感谢您的时间。