JPanel .gif Datei anzeigen

illaX

Erfahrenes Mitglied
HI,

ich habe einen JPanel und moechte dort eine .gif Datei anzeigen lassen. Wie geht das?
 
Du musst das Bild einlesen und mit der paint() Methode auf das Panel malen in ner Minute gibts nen Beispiel.
Gruß Steff

Code:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

/*
 * Created on 15.03.2005
 */

/**
 * @author Steffen Rumpf
 */
public class BackgroundPanel extends JPanel{
    private URL url = null;
    private boolean viewImg = true;
    
    public BackgroundPanel(URL url, boolean viewImg) {
        super(true);
        // the url to the image
        this.url = url;
        // a flag if true the image will be viewed
        this.viewImg = viewImg;
    }
    
    /** (non-Javadoc)
     * @see java.awt.Component#paint(java.awt.Graphics)
     * Paint the background image
     */
    public void paint(Graphics g) {
        if(viewImg == true) {
            BufferedImage pic = null;
            // create the url for the background image
            try {
                pic = ImageIO.read(url);
            } catch (MalformedURLException e1) {
                e1.printStackTrace();
            } catch (IOException e2) {
                e2.printStackTrace();
            }
            g.drawImage(pic, 0, 0,this);
            super.paint(g);
        } else {
            super.paint(g);
        }
    }

    /**
     * @param viewImg The viewImg to set.
     */
    public void setViewImg(boolean viewImg) {
        this.viewImg = viewImg;
        repaint();
    }
}
 
Zuletzt bearbeitet:
Hallo!

Code:
/**
 * 
 */
package de.tutorials;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * @author Darimont
 */
public class PanelWithImage extends JFrame {

	public PanelWithImage() {
		super("PanelWithImage");
		setDefaultCloseOperation(EXIT_ON_CLOSE);

		JLabel label = new JLabel(new ImageIcon("c:/Winter.gif"));
		JPanel panel = new JPanel();
		panel.add(label);
		add(panel);

		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new PanelWithImage();
	}

}

Gruß Tom
 
Hallo!

@steff aka sId
wenn man das Zeichenverhalten einer Komponente ändert sollte man immer nur paintComponent(Graphics g) überschreiben.

Gruß Tom
 
Habe das von Darimont ausprobiert und es funktioniert natuerlich ;)

Aber wofuer ist das pack()?
 
Zurück