【发布时间】:2014-01-03 05:48:05
【问题描述】:
我一直在浏览 SO 和 google 一段时间来寻找这个问题的答案,但我似乎找不到真正有效的答案。我将从头开始:
我使用在后台运行批处理文件的方法创建了一个 Java 类(不会出现命令窗口)。该程序运行良好,但最终用户会感到有些困惑,因为批处理文件需要一段时间才能完成——用户将不知道程序是否仍在运行。批处理脚本执行完成后,会出现一个消息对话框,说明它已完成,但在运行方法和出现对话框之间的一段时间内,程序看起来好像什么也没做。
所以这是我的问题:我非常想显示一个带有显示批处理文件输出的文本区域的新框架。但是,我知道如果不创建临时文件、写入它们、读取它们等等,这是非常困难的。如果可能的话,我宁愿避免这种情况。因此,我决定在进程运行时显示不确定的 JProgressBar 并在进程完成时关闭它可能会更好。不幸的是,我认为 Swing 无法处理这个问题,因为它需要同时运行多个进程。我听说过 SwingWorker,但不确定在这种情况下如何使用它。我有以下 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.waitFor() 等待进程时,屏幕上没有任何内容。我只想向用户显示一个进程仍在运行。想法?谢谢!
【问题讨论】:
标签: java swing progress-bar joptionpane jprogressbar