我有一个JButton执行批处理文件(ping 192.168.0.5)并将ping结果输出到JTextArea。当我按下按钮运行批处理文件时,它确实有效。控制台显示计算机实时ping,就像cmd提示一样,但是点击按钮后,它等待批处理文件完成执行,然后一次性输出整个结果,而不是像控制台那样实时输出。如何让textArea输出像控制台一样实时运行而不是一次性运行?
JButton btnPingComputer = new JButton("PING");
btnPingComputer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String line;
Process p = null;
try {
p = Runtime.getRuntime().exec("c:\\test.bat");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader in = new BufferedReader(new InputStreamReader(p
.getInputStream()));
try {
while ((line = in.readLine()) != null) {
System.out.println(line);
textArea.append(line);
textArea.append(String.format(" %s%n", line));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// textArea.setText("");
}
});