【问题标题】:how to make the progression of a progressbar swing?如何使进度条的进度摆动?
【发布时间】:2013-03-05 16:02:37
【问题描述】:

我想创建一个在设备中安装文件的应用程序。但是我在实现进度时遇到了问题,我在框架中使用来调用要安装的类的代码如下所示,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();
    }

【问题讨论】:

  • progress bar tutorial 将是一个很好的起点
  • 我从tuto开始,但是创建循环方法不是问题;进度条,但如何将条与执行脚本的安装方法相关联。或者如果我使用不确定模式如何停止动画
  • 不要在 EDT 上下文之外更新 UI 组件。使用 SwingWorker 代替线程

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


【解决方案1】:

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

【讨论】:

  • 这就是我在 Install 类中所做的事情,并且由于我的脚本而给出的行数由静态变量值给出
  • 因为当我调用这个值时,我将在执行结束时获得最后一个值
  • 对,单个值不是很有帮助;您必须解析脚本的 stdout 流。是你的剧本吗?您可以启用详细模式之类的功能吗?编辑:请更新您的问题以反映您的方法。
【解决方案2】:

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

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

是的,看看我下面的答案

What is the ways updating jProgressBar?

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多