如何让进度条摆动进度?

问题描述 投票:0回答:2

我想创建一个在设备中安装文件的应用程序。但我在实现进度时遇到问题,下面给出了我在 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();
    }
java swing concurrency event-dispatch-thread jprogressbar
2个回答
2
投票

here所示,您可以使用

ProcessBuilder
来执行脚本。解析从
getInputStream()
获得的组合流,以评估脚本的实际进度。使用该信息来调节您的
JProgresBar
。要保持 GUI 中的活跃性,请在
doInBackground()
SwingWorker
方法中执行此操作,您可以从中调用
setProgress()


1
投票

嗯...据说这种线程方式不适合JProgressBar。相反,请使用

Timer
移动。我在尝试在线程内使用 JProgressBar 时遇到了同样的问题。使用以下链接获取更多信息,它也有工作示例:

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

是的,请看下面我的回答:

jProgressBar有哪些更新方式?

© www.soinside.com 2019 - 2024. All rights reserved.