为什么我的JLabel动画不起作用



代码:

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和并发的教程。

最新更新