本人想实现一个类似于霓虹灯的小程序,在一个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++);
}
有哪位大侠能指点一二,谢谢!!!才具体调用程序如下:
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++);
}
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;以结束线程。试了一下,成功了。