【发布时间】:2016-01-18 15:31:55
【问题描述】:
我正在制作一个运行几个 cmd 命令(USMT 和文件传输)的程序
它工作正常,但我只从文本框中的 cmd 获取最后一行,并且只有在它完成操作之后。我希望它实时打印 cmd 输出的内容。
public void load() throws IOException {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd \"C:\\usmt\" && loadstate.bat");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
cOut.setText(line);
System.out.println(line);
}
}
【问题讨论】:
-
您是否尝试过使用
revalidate()和repaint()刷新文本字段? -
您的循环阻塞了负责绘制的线程(事件调度线程)。您应该在后台线程中执行耗时的任务,例如使用SwingWorker。