Java comment afficher une image dans Jpanel

[Résolu/Fermé]
Signaler
Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
-
 geospatial -
Bonjour,
j ai essayer de faire un code qui affiche une image dans jpanel
mes je ni arrive pas pouvez vous m aidez a faire un code pour affichier une image dans un JPanel merci d'avance de votre

voici mon code

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * NewJFrame.java
 *
 * Created on 22 sept. 2010, 16:47:24
 */
import java.awt.Graphics;
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.*;

/**
 *
 * @author sofiene
 */
public class NewJFrame extends javax.swing.JFrame {

    /** Creates new form NewJFrame */
    public NewJFrame() {
        initComponents();
    panel = new panneau();
    getContentPane().add(panel);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        panel = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("jLabel1");

        javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
        panel.setLayout(panelLayout);
        panelLayout.setHorizontalGroup(
            panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 334, Short.MAX_VALUE)
        );
        panelLayout.setVerticalGroup(
            panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(29, 29, 29)
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 418, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(82, 82, 82)
                        .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(103, 103, 103)
                .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(54, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

/*public void paintComponent (Graphics g){
                ImageIcon imIc = new ImageIcon("C:/Users/sofiene/Desktop/Lighthouse.jpg");
                Image im = imIc.getImage();
jPanel1.paintComponents(g);
g.drawImage(im, 10, 10, 10, 10, null);

}*/

class panneau extends JPanel {
ImageIcon image = new ImageIcon("C:/Users/sofiene/Pictures/kt_impact.gif");
public void paintComponent (Graphics g){
//                ImageIcon imIc = new ImageIcon("C:/Users/sofiene/Desktop/Lighthouse.jpg");
//                Image im = imIc.getImage();
panel.paintComponents(g);
g.drawImage(image.getImage(), 100, 100, 10, 10, panel);

}
}
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                NewJFrame frame = new NewJFrame();
                panel.setVisible(true);
//                jPanel1.paintComponents(Graphics JPanel);
  //              frame.paintComponents(jPanel1);

                //JLabel image = new JLabel( new ImageIcon( "mon_image.jpg"));
                //pane.setLayout(new BorderLayout, CENTER);

  /*              //frame.drawImage();
                jPanel1.checkImage(im, frame);
                jPanel1.setVisible(true);
*/
              //  jLabel1.setIcon(new ImageIcon("C:/Users/sofiene/Desktop/Lighthouse.jpg"));



                frame.setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify
    private static javax.swing.JLabel jLabel1;
    private static javax.swing.JPanel panel;
    // End of variables declaration

}





8 réponses

Messages postés
3255
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
594
Bonjour,

le code suivant affiche une image dans une fenetre:

import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
 
public class Panneau extends JPanel {
 
        public void paintComponent(Graphics g){
                try {
                        Image img = ImageIO.read(new File("nomImage.jpg"));
                        g.drawImage(img, 0, 0, this);
                        //Pour une image de fond
                        //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                
        }               
}


à toi de t'en servir correctement
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
3
salut je te remercie de m'avoir donnee une solution
je vai de suis essayer ce code
et encore merci de m'avoir repondu
Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
3
re salut j ai mis exatement le code que tu pas proposer est ca ne marche pas
quand je mes public pour la class panneau ca me detecte une erreur dans j ai enlever le public c est senser marcher mes ca ne marche pas
pouvez vous me dire ce qui ne va pas dans ce code
merci

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * frame.java
 *
 * Created on 23 sept. 2010, 14:35:09
 */
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

/**
 *
 * @author sofiene
 */
public class frame extends javax.swing.JFrame {

    /** Creates new form frame */
    public frame() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        Panneau = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        javax.swing.GroupLayout PanneauLayout = new javax.swing.GroupLayout(Panneau);
        Panneau.setLayout(PanneauLayout);
        PanneauLayout.setHorizontalGroup(
            PanneauLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );
        PanneauLayout.setVerticalGroup(
            PanneauLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(64, 64, 64)
                .addComponent(Panneau, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(236, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(48, 48, 48)
                .addComponent(Panneau, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(152, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new frame().setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JPanel Panneau;
    // End of variables declaration

}

class Panneau extends JPanel {

        public void paintComponent(Graphics g){
                try {
                        Image img = ImageIO.read(new File("C:/Users/sofiene/Desktop/Lighthouse.jpg"));
                        g.drawImage(img, 0, 0, this);
                        //Pour une image de fond
                        //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

        }
}
Messages postés
3255
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
594
....tu comprend ce que tu code?

Fait un test du code que je t'es donné a part ave'c sa propre méthope main...ce que tu as fait ne va pas du tout, faut pas te contenter de recopier betement ce que je t'ai donné, il faut l'adapter a ton code.

Si il y a des choses que tu ne comprend pas sur les conteneur, je te conseil de jeter un coup d'oeil à ce cours:

Java et la programmation événementielle
et plus particulierement la partie
Une histoire de conteneur
Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
3
salut
c est vrai que je du mal a comprends c est normal je debute
peu tu me dire quel son les erreur que j ai faite et la raison pour laquelle le code ne fonctionne pas.
merci
Messages postés
3255
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
594
regarde le nom de la classe, tu l'utilise partout au dessus sans avant meme qu'elle n'existe, il faut changer ça. Et puis ou l'initialise tu? ou la declares tu et la lance tu?
Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
3
merci pour c est remarque je croie que je commence a comprendre
Messages postés
3255
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
594
en gros ce que je t'ai donné, tu ne gardes que la méthode, ou es fonction utilisé, et tu les insere dans ton code la ou tu en as besoin. mais in ne faut pas insérer tout la classe d'un coup comme ça.

Sur ce moi je vais partir, je reviens demain à 9h. bonne chance :)
Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
3
j ai mis la class panneau tout au debut 1 probleme de resolu
ensuite
j ai inisialise dans le constructeur de la frame la class panneau jpanel
de cette maniere panneau de = new panneau();
pui j ai mis de.setVisible(true);

mes ca ne marche pas

bizare
Messages postés
286
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
22 juin 2018
3
I LOVE YOU MON AMIE varfendell

MERCI MERCI MERCI
ERECA ca marche ouaiHHHHHHHHHHHHHHHHH

merci beaucoup de ton aide c est rare les personne qui prend la peine d aidez les autres
merci
Messages postés
3255
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
594
et bien, une bonne chose de faite :)
Salut ce code fonctionne a merveille


import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

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


/**
* @author Tu mettras ton nom
*
*/
public class ImageFond extends JFrame {
private Container c;
private JPanel imagePanel;
private String filePath;

public ImageFond(String filePath) {
super("Image de fond");
this.filePath = filePath;
initialize();
}

private void initialize() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
c = getContentPane();
imagePanel = new JPanel() {
public void paint(Graphics g) {
try {
BufferedImage image = ImageIO.read(new File(filePath));
g.drawImage(image, 0, 0, null);
} catch (IOException e) {
e.printStackTrace();
}
}
};
imagePanel.setPreferredSize(new Dimension(640, 480));
c.add(imagePanel);
}

public static void main(String[] args) {
String imagePath = "C:\\ichigofirstbankai.jpg";
ImageFond fond = new ImageFond(imagePath);
fond.pack();
fond.setVisible(true);
}
}