在批处理文件运行时显示不确定的JProgressBar

在批处理文件运行时显示不确定的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()等待进程时,屏幕上什么也没有。我只想让用户知道进程还在运行。思想?谢谢!


哈士奇WWW
浏览 687回答 3
3回答

Helenr

为了使它符合我的需要,我得用它一点。它必须是一个单独的类,并将我的进程命令传递给它。我现在有一个类变量和一个Mutator方法来设置值。但出于某种原因,它似乎没有运行批处理文件。

慕丝7291255

在添加该类之前,批处理文件将在大约30秒内启动和完成。现在它已经开了一个多小时了(也许两个小时?)还没结束呢
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java