Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;守护进程线程图像动画器“;未完成_Java_Multithreading_Swing_Thread Sleep - Fatal编程技术网

Java &引用;守护进程线程图像动画器“;未完成

Java &引用;守护进程线程图像动画器“;未完成,java,multithreading,swing,thread-sleep,Java,Multithreading,Swing,Thread Sleep,我在做一个游戏,当一艘船死了,我会制作一条显示GIF爆炸的线。问题是,有时候这种爆炸并没有消失,而是一直持续到游戏结束 调试时,我看到“守护进程线程图像动画-0”正在运行,我猜GIF。这是爆炸的代码: public void run(){ setIcon(new ImageIcon(getClass().getClassLoader().getResource("Imag/explosion.gif"))); Point pos = this.getLocation();

我在做一个游戏,当一艘船死了,我会制作一条显示GIF爆炸的线。问题是,有时候这种爆炸并没有消失,而是一直持续到游戏结束

调试时,我看到“守护进程线程图像动画-0”正在运行,我猜GIF。这是爆炸的代码:

public void run(){
    setIcon(new ImageIcon(getClass().getClassLoader().getResource("Imag/explosion.gif")));
    Point pos = this.getLocation();
    setBounds(pos.x,pos.y);
    try{
        Thread.sleep(500);
    }
    catch(Exception e){
        e.printStackTrace();
    }
    juego.removeEntidad(this);

}
有时这个问题不会发生,我不知道如何解决它

我在做一个游戏,当一艘船死了,我会制作一条显示GIF爆炸的线

是的,您需要使用线程,但不应在线程中更新GUI组件


相反,您可能应该使用
SwingWorker
。阅读Swing教程中关于Swing中并发性的部分,了解更多信息和使用
SwingWorker

的示例,如果用户线程太难说话,也没有用户线程。sleep(int)与Swing(Oracle教程EventDispatchThread中的更多信息)一起使用,以获得更好的帮助,问题是为了使用SwingWorker,我需要类扩展它。但是我正在扩展JLabel,我不能生成一个倍数inheritance@Mario:然后使用composition,for,将标签和worker包含在同一个类中。