Maison  >  Article  >  Java  >  Comment afficher un GIF animé comme arrière-plan d'un conteneur Swing ?

Comment afficher un GIF animé comme arrière-plan d'un conteneur Swing ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 12:44:02934parcourir

How to Display an Animated GIF as a Swing Container Background?

Affichage d'un GIF animé comme arrière-plan Swing

Question

Comment un GIF animé (cycliste) peut-il être chargé et affiché comme arrière-plan d'un Conteneur Swing, par opposition à l'image statique chargée à l'aide de ImageIO.read() ou Toolkit.getImage()?

Answer

Pour obtenir un GIF animé pour une peinture personnalisée, utilisez une ImageIcon plutôt qu'ImageIO ou Toolkit. ImageIcon fournit une image animée, contrairement à l'image statique renvoyée par les autres méthodes.

L'extrait de code suivant illustre comment charger un GIF animé et l'utiliser comme arrière-plan d'un panneau :

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.net.URL;

class ImagePanel extends JPanel {

    private Image image;

    ImagePanel(Image image) {
        this.image = image;
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image,0,0,getWidth(),getHeight(),this);
    }

    public static void main(String[] args) throws Exception {
        URL url = new URL("https://i.sstatic.net/iQFxo.gif");
        final Image image = new ImageIcon(url).getImage();
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame("Image");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setLocationByPlatform(true);

                ImagePanel imagePanel = new ImagePanel(image);
                imagePanel.setLayout(new GridLayout(5,10,10,10));
                imagePanel.setBorder(new EmptyBorder(20,20,20,20));
                for (int ii=1; ii<51; ii++) {
                    imagePanel.add(new JButton("" + ii));
                }

                f.setContentPane(imagePanel);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

Dans ce code :

  1. Une ImageIcon est créée en utilisant le nouveau ImageIcon(url).getImage() et l'image résultante est animée.
  2. Un ImagePanel est utilisé pour étirer l'image pour l'adapter à la taille du panneau.
  3. Boutons sont ajoutés au ImagePanel pour démontrer l'arrière-plan animé.

Exécutez ce code pour voir le GIF animé affiché en arrière-plan.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn