日期:2014-05-20  浏览次数:20851 次

关于jProgressBar的一个奇怪问题
我想使用jProgressBar表示程序的执行进度,首先写了一个类,代码如下:

public   class   ProgressThread   extends   Thread   {
        JProgressBar   bar=null;
        public   ProgressThread()   {
                bar   =   Illustrator_applet.jProgressBar1;
        }
        public   void     run(){
                try{
                        SwingUtilities.invokeLater(new   Runnable()   {
                                public   void   run()   {
                                        bar.setStringPainted(true);
                                        bar.setValue(bar.getValue()   +   20);
                                        bar.paintImmediately(0,0,bar.getWidth(),bar.getHeight());
                                        try{
//                                             Thread.sleep(100l);
                                                System.out.println( "sleep   100... ");
                                        }catch(Exception   ee){ee.printStackTrace();}
                                }
                        });
                }catch(Exception   ee){ee.printStackTrace();}
        }
}

然后在代码中调用了:   (new   ProgressThread()).start();
结果是,每次调用时进度条并不移动,而是在程序执行完毕后直接跳到了100%.
我在网上查了一些资料,比如http://joyjoii.spaces.live.com/blog/cns!a470149c6dfba182!987.entry
但是调了2天都解决不了,期待高手帮助,先谢谢了.


------解决方案--------------------
看不懂楼主的做法,JProgressBar 的进度不是都要自己要控件吗?

比如说,首先
progressBar.setMaximum(0);
//progressBar.setIndeterminate(true);//这个是默认的设置。

然后,在估计程序运行到10%的时候,就要JProgressBar.setValue(10)
在估计程序运行到20%的时候,就要JProgressBar.setValue(10)
...

等等。

我也是初学者,不知道是不是这样用的。