0
我正在創建一個小遊戲,我有一個問題。我推出了2個GIF,當GIF完成時,圖像停止並且不循環。我想要一種方式來循環這個gif,因爲它的程序運行良好。 這是代碼:gifs不循環
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.WindowConstants;
public class EjemploJLayeredPane {
public static void main(String[] args) {
JFrame v = new JFrame("Ejemplo de JLayeredPane");
JLayeredPane layered = new JLayeredPane();
JLabel fondo = new JLabel();
ImageIcon imagen = new ImageIcon("fondo batalla.png");
fondo.setIcon(imagen);
fondo.setSize(imagen.getIconWidth(), imagen.getIconHeight());
JLabel primerPlano1 = new JLabel();
ImageIcon imagen1 = new ImageIcon("pikachufrente.gif");
primerPlano1.setIcon(imagen1);
primerPlano1.setBounds(275,-80,400,400);
JLabel primerPlano2 = new JLabel();
ImageIcon imagen2 = new ImageIcon("charmanderespalda.gif");
primerPlano2.setIcon(imagen2);
primerPlano2.setBounds(85,20,400,400);
layered.add(fondo, new Integer(1));
layered.add(primerPlano1, new Integer(2));
layered.add(primerPlano2, new Integer(2));
v.getContentPane().add(layered);
v.setSize(imagen.getIconWidth(), imagen.getIconHeight() + 20);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
v.setVisible(true);
}
}
這對我的作品。我們發現行爲不一致的事實表明,問題在於您在AWT事件派發線程之外執行Swing操作,這被記錄爲導致不可預知的行爲。將所有代碼移動到Runnable的run方法中,並將該Runnable傳遞給[EventQueue.invokeLater](https://docs.oracle.com/javase/8/docs/api/java/awt/EventQueue.html #的invokeLater-java.lang.Runnable-)。 – VGR