Gif animado sin mucho después de reemplazar con el método de setIcon JLabel

Thunderz2016:

Todavía soy muy nuevo en Java y programación en general. Estoy tratando de mostrar una imagen GIF usando Swing y el siguiente código:

    JPanel contentPane;
    JLabel imageLabel = new JLabel();

    public FrostyCanvas(String imageName) {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(new BorderLayout());
            setSize(new Dimension(1600, 900));
            setTitle("FrostySpirit v1.1.1 (Beta) - FrostyCanvas");
            // add the image label
            ImageIcon ii = new ImageIcon(this.getClass().getResource(imageName));
            imageLabel.setIcon(ii);
            contentPane.add(imageLabel, java.awt.BorderLayout.CENTER);
            // display target GIF
            this.setLocationRelativeTo(null);
            this.setVisible(true);
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

La llamada de método es el siguiente: (en una clase diferente)

FrostyCanvas FC = new FrostyCanvas("old.gif");

El GIF está animado en este punto. entonces trato de reemplazar el GIF con otro utilizando el método siguiente: (en la misma clase que ForstyCanvas (String imageName))

public void changeGif(String imageName) throws IOException
    {
        Icon icon; File file;
        file = new File(imageName);
        icon = new ImageIcon(ImageIO.read(file));
        imageLabel.setIcon(icon);
    }

Me llamo el método anterior en una clase diferente usando el siguiente código:

FC.changeGif("D:\\new.gif")

La imagen se sustituye con éxito. Sin embargo, ahora sólo muestra el primer cuadro de new.gif y ya no se animó. ¿Cómo puedo hacer que el nuevo movimiento GIF?

Matt:

La forma ImageIO lee la imagen es la creación de una imagen estática. Lo que hay que hacer es utilizar el cargador del ImageIcon.

ImageIcon replacement = new ImageIcon(file.toURI().toURL());

De esa manera usted está utilizando el mismo método para construir el icono de la imagen como lo hace con el recurso / url.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=365927&siteId=1
Recomendado
Clasificación