try {
            for (int i = 0; i < 100; i++) {
                jProgressBar1.setValue(i);
                Thread.sleep(500);
            }
        } catch (Exception ee) {}为什么只有循环执行完了以后才设置进度条??

解决方案 »

  1.   

    试试在Thread.sleep(500);前加一句yield();
      

  2.   

    try {
                for (int i = 0; i < 100; i++) {
                    jProgressBar1.setValue(i);
                    Thread.yield();
                    Thread.sleep(500);
                }
            } catch (Exception ee) {}
    这样不行..
      

  3.   

    主线程占用了所有的cpu时间。
      

  4.   

    new Thread(){
    public void run()
    {
    try {
                for (int i = 0; i < 100; i++) {
                    jProgressBar1.setValue(i);
                    Thread.yield();
                    Thread.sleep(500);
                }
            } catch (Exception ee) {}
    }
    }.start();
    我回答了无数这样的问题了。这都是SWING包的线程问题。
      

  5.   

    CPU有一个时间片再一个时间片结束后,各线程会继续抢时间片。也许正如楼上所说,一直是主线程抢到时间片;
      

  6.   

    new Thread(){
    public void run()
    {
    try {
                for (int i = 0; i < 100; i++) {
                    jProgressBar1.setValue(i);
                    Thread.sleep(500);
                }
            } catch (Exception ee) {}
    }
    }.start();
    我回答了无数这样的问题了。这都是SWING包的线程问题。
    与上楼不同的是不要Thread.yield(),我看错了,复制上去的。
      

  7.   

    new Thread(){
    public void run()
    {
    try {
                for (int i = 0; i < 100; i++) {
                    jProgressBar1.setValue(i);
                    Thread.sleep(500);
                }
            } catch (Exception ee) {}
    }
    }.start();------------你确保这种处理方法是线程安全的