代码:
try {
ImageIcon ico2=new ImageIcon("src/on1.png");
jLabel42.setIcon(ico2);
Thread.sleep(100);
ImageIcon ico3=new ImageIcon("src/on2.png");
jLabel42.setIcon(ico3);
Thread.sleep(100);
ImageIcon ico4=new ImageIcon("src/on3.png");
jLabel42.setIcon(ico4);
Thread.sleep(100);
ImageIcon ico5=new ImageIcon("src/on4.png");
jLabel42.setIcon(ico5);
Thread.sleep(100);
ImageIcon ico7=new ImageIcon("src/on5.png");
jLabel42.setIcon(ico7);
Thread.sleep(100);
ImageIcon ico8=new ImageIcon("src/on6.png");
jLabel42.setIcon(ico8);
Thread.sleep(100);
ImageIcon ico9=new ImageIcon("src/on7.png");
jLabel42.setIcon(ico9);
Thread.sleep(100);
ImageIcon ico10=new ImageIcon("src/on8.png");
jLabel42.setIcon(ico10);
Thread.sleep(100);
ImageIcon ico6=new ImageIcon("src/on1.png");
jLabel42.setIcon(ico6);
OffOn1=1;
} catch (InterruptedException ex) {
}
此代码的工作原理与相同
Thread.sleep(900);
ImageIcon ico6=new
ImageIcon("src/on1.png");
jLabel42.setIcon(ico6);
OffOn1=1;
我的问题是为什么?!!!
我们又来了。
应该绘制标签的线程是执行这些代码行的线程:事件调度线程。由于它忙于执行这些代码行,所以在完成执行之前,它无法绘制任何内容。
你应该使用一个单独的线程来睡眠,并定期更改标签的图标。不过,请确保始终可以从EDT访问每个回转部件。最简单的方法是使用Swing Timer。
阅读有关swing和并发的教程。