本人想实现一个类似于霓虹灯的小程序,在一个JFrame上添加了2个JLabel,每隔一段时间改变一个JLabel的颜色,但是不知怎么搞得,不能看到变化的效果,只有在计数完之后改变颜色,郁闷啊!!
有哪位大侠能指点一二,谢谢!!!才具体调用程序如下:
 void process()
 { 
   for(int i = 0;i<100;i++)
   {
      changeLabelColor(jLabel1,Color.magenta);
      changeLabelColor(jLabel2,Color.magenta);
      changeLabelColor(jLabel2,Color.red);
      changeLabelColor(jLabel1,Color.red);
    }
  }
  
  void changeLabelColor(JLabel jLabel,Color color)
  {
     jLabel.setBackground(color);
     jLabel.setForeground(color);
     for(double j=0;j<999999;j++)
        for(double k=0;k<2;k++);
 }

解决方案 »

  1.   

    需要做一个线程,在它的RUN()方法里改变颜色,然后调用sleep()方法。
      

  2.   

    做了一段代码如下:
        public Test() { //画面启动时启动线程
            flag = true;
            nihongdeng thread = new nihongdeng();
            thread.start();
        }    class nihongdeng extends Thread {
            public void run() {
                while (flag) {
                    if (fllbl1.getBackground() == Color.magenta) {
                        changeLabelColor(fllbl2, Color.red);
                        changeLabelColor(fllbl1, Color.red);
                    } else {
                        changeLabelColor(fllbl1, Color.magenta);
                        changeLabelColor(fllbl2, Color.magenta);
                    }
                    try {
                        sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }最后在关闭画面的时候设置flag=false;以结束线程。试了一下,成功了。