在批处理文件运行时显示不确定的JProgressBar
我已经浏览了很长一段时间,谷歌也在寻找这个问题的答案,但我似乎找不到真正有效的答案。我会从头开始:
我创建了一个Java类,它的方法在后台运行一个批处理文件(命令窗口不出现)。这个程序工作得很好,只是对最终用户来说有点混乱,因为批处理文件需要一段时间才能完成-用户将不知道该程序是否仍在运行。批处理脚本执行完后,会出现一个消息对话框,表示它已经完成,但是在运行该方法时到该对话框出现之间的一段时间内,该程序似乎什么也不做。
因此,我的问题是:我非常希望显示一个新的框架,其中包含一个文本区域,该区域显示批处理文件的输出。但是,我知道,如果不创建临时文件、给它们写信、读取它们等等,就很难做到这一点。如果可能的话,我宁愿避免。因此,我认为最好在进程运行时显示一个不确定的JProgressBar,并在进程完成时关闭它。不幸的是,我认为Swing不能处理这个问题,因为它需要同时运行多个进程。我听说过一个摇摆工,但我不太确定如何在这种情况下使用。我有下面的SSCCE,它可以工作,但是没有实现进度条。
public myClass(){
public static void main(String[] args){
String[] commands = {"cmd.exe", "/C", "C:\\users\\....\\myBat.bat"};
Process p = Runtime.getRuntime().exec(commands);
p.waitFor()
JOptionPane.showMessageDialog(null, "Process finished!");
}}
当p.warfor()等待进程时,屏幕上什么也没有。我只想让用户知道进程还在运行。思想?谢谢!