首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jprogressbar不工作

Jprogressbar不工作
EN

Stack Overflow用户
提问于 2013-12-18 06:02:38
回答 2查看 2K关注 0票数 3

我正试图通过网络上传一些文件。当上传时,它将需要一个不确定的时间。因此希望在上传过程中显示一个不确定的jprogressbar。然而,问题是我的jprogressbar和upload不能同时工作。我在一个单独的线程中尝试上传,同时在EDT中保留jprogressbar。我尝试了几种不同的方法。其中一些是: 1)实现Runnable,在run()中,我上传了文件。这个进度条一直在美国东部时间里。(不起作用) 2)有两个单独的线程,并将上传和进度条处理放在每个线程中。(不工作)。这方面的代码是:

代码语言:javascript
复制
Thread oThread = new Thread(new Runnable() {

   @Override
   public void run() 
   {
        progressBar.setIndeterminate(true);
        progressBar.setVisible(true);
        progressBar.validate();

   }
});

Thread oThread1 = new Thread(new Runnable() 
{

    @Override
    public void run() {
        logger.info("Upload result from ***: "+ newport.upload(textbyte, wavbyte,xmlbyte, filename));

        }
    });

3)然后我重写了整个过程,并尝试了一种使用执行者的不同方法:

代码语言:javascript
复制
executor.execute(new Runnable() {
    @Override
    public void run() {
            upload actions

            SwingUtilities.invokeLater(new Runnable() {
                 progBar.setVisible(false);
            });
    }});

但这些技术都不起作用。我对此很陌生,我想知道是否必须这样做才能显示jprogressbar (不确定)。我想知道是否有更简单和更容易的方法来做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-18 06:36:22

实际上,您并没有在您发布的代码中的任何一点上设置进度条的值。

此外,这看起来是使用SwingWorker的一个很好的例子,它将在一个不同的线程上执行工作,然后随着进度给您打电话。幸运的是,这些回调已经发生在Swing线程上。

这个SwingWorker示例甚至包括设置进度栏:

http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html

票数 1
EN

Stack Overflow用户

发布于 2013-12-18 06:33:30

在使用jporgressbar的代码示例中,必须使用setValue()来更改进度条

代码语言:javascript
复制
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;

public class Tets  {

    public static void main(String [] args) {
       JFrame frame =new JFrame();
       JPanel panel=new JPanel();

       JProgressBar bar=new JProgressBar();
       bar.setMaximum(100);
       bar.setMinimum(0);
       panel.add(bar);


       frame.getContentPane().add(panel);
       frame.pack();
       frame.setVisible(true);

       for(int i=0;i<100;i++){
           bar.setValue(i);
           try {
               Thread.sleep(100);
           } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

       }
   }

}

祝好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20650738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档