package javacodebook.media.graphic.load;

import java.awt.*;
import javax.swing.JPanel;

/**
 * Ein Panel, dass eine Grafik auf sich selbst darstellt, in der Originalgröße.
 * Die Größe des Panels wird entsprechend angepasst, kann aber größer sein
 * als die Grafik, wenn das Panel von der umgebenden Komponente größer
 * gezogen wird (z.B. in einer JScrollPane, die größer ist als die Grafik).
 */
public class ImagePanel extends javax.swing.JPanel {
    //Die Grafik, die angezeigt werden soll
    private Image image;

    public ImagePanel(Image image) {
        this.image = image;
    }

    /*
     * Hier wird die Grafik auf das Panel gezeichnet. Dabei wird ihre Größe als
     * Masstab genommen und nicht die Größe des Panels.
     */
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, image.getWidth(this), image.getHeight(this), this);
    }

    /* Es wird die Größe der Grafik als PreferredSize zurückgegeben */
    public Dimension getPreferredSize() {
        return new Dimension(image.getWidth(this), image.getHeight(this));
    }
}
