Java afficher une image

electroking 182 Messages postés dimanche 14 septembre 2014Date d'inscription 9 décembre 2017 Dernière intervention - 4 déc. 2017 à 16:38 - Dernière réponse : ohanfou 2 Messages postés vendredi 8 décembre 2017Date d'inscription 9 décembre 2017 Dernière intervention
- 9 déc. 2017 à 18:14
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
Afficher la suite 
182Messages postés dimanche 14 septembre 2014Date d'inscription 9 décembre 2017 Dernière intervention

3 réponses

Répondre au sujet
tarek_dotzero 733 Messages postés jeudi 19 juillet 2007Date d'inscription 7 décembre 2017 Dernière intervention - 7 déc. 2017 à 00:54
0
Utile
1
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)
electroking 182 Messages postés dimanche 14 septembre 2014Date d'inscription 9 décembre 2017 Dernière intervention - 9 déc. 2017 à 15:26
Merci pour ta réponse je regarde ça le plus vite possible
Commenter la réponse de tarek_dotzero
ohanfou 2 Messages postés vendredi 8 décembre 2017Date d'inscription 9 décembre 2017 Dernière intervention - Modifié par KX le 9/12/2017 à 19:13
0
Utile
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);
        }
    }
}
Commenter la réponse de ohanfou