Afficher une image de fond dans un panel

bonjour à tous!
je souhaite afficher une image de fond ds un panel et ensuite afficher ce panel ds un jframe.
j’ai une classe Entete représantant mon panel ci-dessous:

public class Entete extends javax.swing.JPanel {

public java.io.File img;

public Entete() {
    initComponents();
    this.paintComponent(this.getGraphics());
}

 public void paintComponent(Graphics g) 
    {
    java.awt.Image image;
    String nomImg;
    
    img=new java.io.File("C:\\Documents and Settings\\Nassa DEGNI\\Bureau\\photo\\image1.jpeg");
    String name=img.getName();
    
    image=java.awt.Toolkit.getDefaultToolkit().getImage(name);
    this.getGraphics().drawImage(image, 10,10,50,50,this);
    this.repaint();
 }

}

le pb est que lorsque j’affiche le panel ds le frame. rien ne s’affiche , que du blanc!
pourkoi?
voyez-vous une solution?
merci de m’aider!

tu es sur de la taille de l’image?
remplace tes 50,50 par image.getWidth() et image.getHeight()

sinon je préfère une autre méthode :
j’utilise un jlabel que j’insere dans le jpanel

ImageIcon im = new ImageIcon(“CHEMIN”);
JLabel toto = new JLabel(im);
panel.add(toto);

Je suis pas sur que tu comprennes bien le fonctionnement des composants swing. Tu ne dois pas appellé toi même la méthode this.paintComponent(this.getGraphics()); explicitement dans ton code. La machine virtuelle se charge de l’appeler pour désinner le composant à l’écran lorsque c’est nécessaire. La méthode invalidate() permet d’indiquer à la machine virtuel que le composant doit être redessinner ainsi que tous ces enfants. Et la méthode repaint() permet de forcer la machine virtuel à redesinner le composant.

public Entete() {
initComponents();
}

protected void paintComponent(Graphics g) {

super.paintComponent(g); // permet de désinner les composants contenu dans le composant

g.drawImage(new ImageIcon("CHEMIN"), 0, 0, this);

}