如何使进度杆摆动?

时间:2013-03-05 16:02:37

标签: java swing concurrency event-dispatch-thread jprogressbar

我想创建一个在设备中安装文件的应用程序。但我有一个问题来实现进度,我在我的fram中使用的代码调用类安装如下,execShellCmd是调用安装到所有设备的方法。 value是Install类提供的静态值。我想实现一个重新安装和重载的进度条,以便进行安装。

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
     Thread t;  
        t = new Thread(){   
        private int postion;
     public void run(){  
        Install install = new Install();
        int position = 0;
        String fileName = directory;
        String shellCommand = fileName;

       // for (int position =0; postion < 105;position +5) {
                jProgressBar1.setValue(Install.value);
                try {
                        Thread.sleep(500);
                } catch (InterruptedException e) {
                }
                position += 5;
        //}
        install.execShellCmd(shellCommand);
        //jTextArea1.setText(error.err.toString());
        }

        };
        t.start();
    }

2 个答案:

答案 0 :(得分:2)

如图here所示,您可以使用ProcessBuilder执行脚本。解析从getInputStream()获得的组合流,以评估脚本的实际进度。使用该信息来调整JProgresBar。要在GUI中保留活跃度,请在SwingWorkerdoInBackground()方法中执行此操作,您可以从中setProgress()调用此方法。

答案 1 :(得分:1)

嗯..据说这种线程方法不适合JProgressBar。而是与Timer一起移动。在线程内部使用JProgressBar时,我遇到了同样的问题。使用以下链接获取更多信息,它也有工作示例

http://www.coderanch.com/t/566728/GUI/java/JProgressBar-Napkin-feel-working

是的,请看下面的答案

What is the ways updating jProgressBar?