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!
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);