Heim  >  Artikel  >  Java  >  Wie zeige ich ein animiertes GIF als Swing-Container-Hintergrund an?

Wie zeige ich ein animiertes GIF als Swing-Container-Hintergrund an?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 12:44:02939Durchsuche

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

Ein animiertes GIF als Swing-Hintergrund anzeigen

Frage

Wie kann ein animiertes (zyklisches) GIF geladen und als Hintergrund für einen Swing angezeigt werden? Swing-Container, im Gegensatz zum statischen Bild, das mit ImageIO.read() oder geladen wird Toolkit.getImage()?

Antwort

Um ein animiertes GIF für benutzerdefiniertes Malen zu erhalten, verwenden Sie ein ImageIcon anstelle von ImageIO oder Toolkit. ImageIcon stellt im Gegensatz zu dem von den anderen Methoden zurückgegebenen statischen Bild ein animiertes Bild bereit.

Der folgende Codeausschnitt veranschaulicht, wie ein animiertes GIF geladen und als Hintergrund für ein Panel verwendet wird:

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);
            }
        });
    }
}

In diesem Code:

  1. Ein ImageIcon wird mit dem neuen erstellt ImageIcon(url).getImage() Zeile, und das resultierende Bild wird animiert.
  2. Ein ImagePanel wird verwendet, um das Bild zu strecken, um es an die Größe des Panels anzupassen.
  3. Schaltflächen werden dem ImagePanel hinzugefügt, um den animierten Hintergrund zu demonstrieren.

Führen Sie diesen Code aus, um ihn anzuzeigen Das animierte GIF wird als Hintergrund angezeigt.

Das obige ist der detaillierte Inhalt vonWie zeige ich ein animiertes GIF als Swing-Container-Hintergrund an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn