Publié le 08/06/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Charger et afficher une image dans un JPanel

Pour rendre les interfaces graphiques plus conviviales, voyons comment ajouter des images dans les conteneurs JAVA. Pour charger une image puis de l'afficher dans un objet, le plus simple est d'utiliser l'objet ImageIcon contenu dans JLabel ou de se construire un dérivé de JPanel avec cette propriété.

Afficher une image de fond dans un panel

Comment dessiner une image avec les composants SWING ?
Pour afficher une image, nous allons créer une nouvelle classe nommée JImagePanel qui hérite des propriétés d’un JPanel. Le chargement de l'image sera lancé directement dans le constructeur de l'objet. De plus, la propriété setStretch(boolean) fixe la manière dont est affiché le fond du Panel.

import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
/**
 * Charger et afficher une image dans un panel
 * http://www.fobec.com/java/919/charger-afficher-une-image-dans-jpanel.html
 * @author fobec 2010
 */
public class JImagePanel extends JPanel {
 
    private Image image = null;
    private Boolean stretch = true;
 
    /**
     * Constructeur
     * @param image image à afficher
     */
    public JImagePanel(Image image) {
        this.image = image;
    }
 
    /**
     * Constructeur
     * @param file nom du fichier
     */
    public JImagePanel(String file) {
        this.image = getToolkit().getImage(file);
    }
 
   /**
    * Position de l'image sur le panel
    * @param stretch true: etirer l'image / false: centrer l'image
    */
    public void setStretch(Boolean stretch) {
        this.stretch = stretch;
    }
 
    /**
     * Surcharger le dessin du composant
     * @param g canvas
     */
    protected void paintComponent(Graphics g) {
        int x = 0;
        int y = 0;
        int width = 0;
        int height = 0;
 
        if (this.stretch) {
            width = this.getWidth();
            height = this.getHeight();
        } else {
            width = this.image.getWidth(this);
            height = this.image.getHeight(this);
            x=((this.getWidth()-width)/2);
            y=((this.getHeight()-height)/2);
        }  
        g.drawImage(this.image, x, y, width, height, this);
    }
 
    /**
     * Exemple : jPanelImage dans un JFrame
     * @param args
     */
    public static void main(String[] args) {
        JImagePanel imagePanel = new JImagePanel("c:mon-image.png");
        //Centrer l'image
        imagePanel.setStretch(false);
        //Etirer l'image
       // imagePanel.setStretch(true);
 
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(imagePanel);
        frame.setSize(400, 400);
        frame.setLocation(200, 200);
        frame.setVisible(true);
    }
}

Le composant JImagePanel ajoute les fonctionnalités basiques pour afficher une image de fond. A vrai dire, nous utilisons ce composant dans plusieurs projets JAVA depuis des années pour rendre les interfaces graphiques plus sympa.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
08/06/2010
Visualisation
vu 9037 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 264 articles
|BIO_PSEUDO|
Commentaires récents

Publié par steev dans java

Bjr,
je voudrai savoir comment mettre le son en pause?
aussi comment faire qr qu'il tourne tjr?

Publié par Fobec dans CMS

//une variante avec UrlMon
uses
UrlMon;

function GetPageContent(URL: string): string;
var
MyFile: file;
Buf: array[0..14] of Char;
Filename: string;

Publié par ric dans CMS

c\'est la première fois que j\'utilise ce logiciel

Publié par Roger HENRI dans CMS

Je ne suis pas sûr que cette procédure marche toujours parfaitement à cause du mot
"selstart" qui, chez moi au moins, paraît être capricieux.

Quand je veux lire sa valeu...

Publié par Fobec dans tuto

Je ne maitrise pas du tout WordPress ...
un plugin a l'air sympa http://wordpress.org/extend/plugins/scripts-gzip/, en parcourant le code source, j'ai vu des pistes pour integrer Gzip sous WordPre...