Java afficher une image

[Fermé]
Signaler
Messages postés
234
Date d'inscription
dimanche 14 septembre 2014
Statut
Membre
Dernière intervention
22 juin 2021
-
Messages postés
3
Date d'inscription
vendredi 8 décembre 2017
Statut
Membre
Dernière intervention
28 décembre 2017
-
Bonjour,

Je sais que mon problème est simple mais même après avoir tenté de nombreux algorithmes différent je n'arrive toujours pas à résoudre mon problème :

Je travaille dans une JFrame avec un JPanel en GridBagLayout et je veux ajouter une image dedans.

Je fais un :

monPanel.add(new MonImage("monImage.png"), gbc);


Où :
- gbc est ma contrainte GridBag
- monImage.png est dans mes ressources (dossier courant)
- monImage() est ma classe qui hérite d'un jpanel (ou un jlabel ou ce que vous voulez)

Je veux que ma classe monImage, en lui donnant simplement le nom de l'image, la charge depuis les ressources et lui définisse une taille (par exemple 360*240) via un jpanel ou un autre composant.

Bien entendu je veux que mon image soit affiché dans ma jframe à la fin, car mes ~10 premères tentatives se sont soldé soit par un élément vide, soit par un carré gris dans ma jframe.

Merci d'avance pour vos réponses

2 réponses

Messages postés
814
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
17 avril 2020
115
Bonjour,

Si vous voulez faire cela selon les règles de l'art, je pense qu'il faut récupérer l'objet Graphics et dessiner l'image.

https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#getGraphics()

https://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html

Si vous voulez juste ajouter une image rapidement juste pour affichage, vous pouvez utiliser un JLabel, il peut prendre une icone (qui peut être grande) comme paramètre de constrcuteur :

https://docs.oracle.com/javase/7/docs/api/javax/swing/JLabel.html#JLabel(javax.swing.Icon)
Messages postés
234
Date d'inscription
dimanche 14 septembre 2014
Statut
Membre
Dernière intervention
22 juin 2021
6
Merci pour ta réponse je regarde ça le plus vite possible
Messages postés
3
Date d'inscription
vendredi 8 décembre 2017
Statut
Membre
Dernière intervention
28 décembre 2017

Personellement j'utilise cette classe lorsque je doit insérer une image
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class ImagePanel extends JPanel implements Serializable {
    Image image = null;
    public ImagePanel(Image image) {
        this.image = image;
    }
    public ImagePanel() {
    }
    public void setImage(Image image){
        this.image = image;
    }
    public Image getImage(Image image){
        return image;
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g); //paint background
        if (image != null) { //there is a picture: draw it
            int height = this.getSize().height;
            int width = this.getSize().width;
            //g.drawImage(image, 0, 0, this); //use image size          
            g.drawImage(image,0,0, width, height, this);
        }
    }
}