CodeS-SourceS
Rechercher un code, un tuto, une réponse

Afficher une image en arrière plan dans un jpanel

0/5 (2 avis)

Vue 8 184 fois - Téléchargée 1 167 fois

Description

Cette classe permet de créer un JPanel qui contient en arrière plan une image. La taille de l'image s'adapte automatiquement à la taille du JPanel.

Source / Exemple :


package fr.julien.panelimage;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.io.File;
import java.io.IOException;

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

/**
 * <b>PanelImage est la classe qui permet de dfinir un panel sur lequel on peut afficher une image en arrire plan</b>
 * <p>
 * Cette classe est caractrise par les informations suivantes :
 * <ul>
 * <li>L'image  afficher dans le Panel</li>
 * </ul>
 * </p>
 * <p>
 * De plus, cette classe dfinit des mthodes permettant d'accder  l'image en arrire plan et de la modifier.
 * </p>
 * <p>
 * Cette classe hrite de JPanel, il est donc possible d'utiliser toutes les mthodes de cette classe. En
 * particulier, on peut ajouter des composants au premier plans (par dessus l'image).
 * </p>
 * <p>
 * L'image qui est affiche en arrire plan est toujours maximise dans le JPanel. Pour dfinir
 * la taille de l'image, on peut fixer la taille du JPanel grce  la mthode setBounds() ou bien
 * en utilisant des layout.
 * </p>
 * 
 * @author Julien
 * @version 1.0
 *
 */
public class PanelImage extends JPanel {

    /**
     * L'identifiant de srialisation
     */
    private static final long serialVersionUID = -6350324456764768311L;

    private Image image;

    /**
     * <b>Constructeur de PanelImage</b>
     */
    public PanelImage() {
        super();
    }
    
    /**
     * <b>Constructeur de PanelImage</b>
     * @param image
     *     L'image  afficher en arrire plan
     */
    public PanelImage(Image image) {
        super();
        setImage(image);
    }

    /**
     * <b>Constructeur de PanelImage</b>
     * @param path
     *     Le chemin de l'image  afficher en arrire plan
     * @throws IOException si le chemin n'est pas trouv
     */
    public PanelImage(String path) throws IOException {
        super();
        setImage(path);
    }
    
    /**
     * Mthode qui permet de modifier l'image
     * @param image
     *     La nouvelle image  afficher
     */
    public void setImage(Image image) {
        this.image = image;
        repaint();
    }
    
    /**
     * Mthode qui permet de modifier l'image
     * @param path
     *     Le chemin vers la nouvelle image  afficher
     * @throws IOException si le chemin n'est pas trouv
     */
    public void setImage(String path) throws IOException {
        try {
            this.image = ImageIO.read(new File(path));
            repaint();
        } 
        catch (IOException e) {
            throw new IOException(path+" introuvable", e);
        }
    }

    /**
     * Mthode d'accs  l'image courante
     * @return l'image affiche en arrire plan
     */
    public Image getImage() {
        return image;
    }
    
    @Override
    public void paintComponent(Graphics g){
        if(image!=null){
            Graphics2D g2d = (Graphics2D)g;
            g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g2d.drawImage(image, 0, 0, getWidth(), getHeight(), null);
        }
    }

}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.