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

请教一个Jlabel闪动的问题
各位大哥大姐:

  小弟的在界面中设置了一个Jlabel,写了一个代码,声明变量为label

  for(int i=0; i<100,i++){
  label.setText(i+"");
  }

  我想要的效果是在执行这个循环的时候,label的值是中不停的变动,可以我运行的时候却是,突然一下,这个label的值就显示100,得不到那种滚动的从1到100的效果,是不是计算机太快了,如果是太快了,我把这个循环值设置为10000,可是得到的效果还是最初不显示,到循环完成之后才显示这个最后的值,我理想的效果是,就像那种安装程序在安装显示复制文件的那种不停变换的效果,请大家指教下,小弟真诚求教,万分感谢.

Thread.sleep(500); 我让线程sleep也不得

------解决方案--------------------
Java code
   class SetPercent implements Runnable {

        private JLabel label = null;
        private int percent = 0;
        public SetPercent(JLabel label){
            this.label = label;
        }
        @Override
        public void run() {
            while (percent < 100){
                synchronized (this.label){
                    this.label.setText(String.valueOf(++percent));                   
                }
                try {
                    Thread.sleep(250);
                } catch (InterruptedException ex) {}
            }
            
            
        }
        
    }

------解决方案--------------------
探讨

请问为什么还是不行呢,我改了下应该不影响,,烦请解答,谢谢

我把程序改成了这样,我在调用时这样调用

for (N n: ns) {
new Thread(new SetPercent(status,"正在生成 :" + n.getName())).start();

}