Java : méthode painComponent jamais appelée

Bonjour,

Je sollicite votre aide car je suis légèrement bloqué sur un bout de code java

Voilà, j'ai un JPanel tout ce qu'il y a de plus normal, j'y ajoute des données dans un gridLayout et j'y met une image de fond. Le problème est au niveau de l'image de fond : la méthode paintComponent qui est sensée me l'ajouter n'est jamais exécuté. J'ai beau essayé de rajouter des repaint(), des update(), updateUI() etc etc, rien n'y fait ! Et j'aimerais assez comprendre pourquoi car j'utilise ça dans une dizaine d'autres programmes et ça marche !

J'ai aussi cherché à utiliser une méthode paint() à la place, même résultat...

Voilà mon bout de code :


import javax.swing.*;
import java.awt.*;


public class AffichagePageCarnet extends JPanel {
	
	private static final long serialVersionUID = 1L;
	private JPanel pane;
	
	public AffichagePageCarnet()
	{
		pane = new JPanel();
		GridLayout layout = new GridLayout(2, 8);
		pane.setLayout(layout);
// les 16 libellés se chargent bien...
		for(int i = 0; i<16; i++)
		{
			pane.add(new JLabel("Test"));
		}
	}
	
// retourne le JPanel que je rajoute au programme global
// avec un simple add("Center", pageCree)
	public JPanel creerPageIndividuelle()
	{
		pane.repaint();
		return this.pane;
	}

// voilà la madame qui veut pas être exécutée
// bon moi aussi j'aimerais pas, mais c'est pas une raison !
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g); 
		Graphics2D g2 = (Graphics2D)g;

// ligne qui me fait dire qu'il n'y a pas d'exécution
// car elle ne s'est jamais affichée dans ma console...
		System.out.println(getClass().getResource("/images/parchemin.png"));
		
        ImageIcon ic = new ImageIcon(getClass().getResource("/images/parchemin.png"));
		Image fond = ic.getImage();

		g2.drawImage(fond,0,0,1024,680,this);

	}
	
}



Un grand merci d'avance à qui m'aidera à comprendre !

Bonne journée,

Alexandre

2 réponses

  1. Problème résolu

    Merci infiniment, j'ai compris où était le problème !
    Je mettais en place un panel par dessus celui qui devait afficher l'image. Donc forcément, ça masquait tout !

    encore merci

    Alexandre
    0
    1. Salut!

      Essaye ceci:

      import java.awt.Dimension;
      import java.awt.Graphics;
      import java.awt.Graphics2D;
      import java.awt.GridLayout;
      import java.awt.Image;
      
      import javax.swing.ImageIcon;
      import javax.swing.JLabel;
      import javax.swing.JPanel;
      
      public class AffichagePageCarnet extends JPanel {
      
      	private static final long serialVersionUID = 1L;
      
      
      	public AffichagePageCarnet() {
      		setLayout(new GridLayout(2, 8));
      		setPreferredSize(new Dimension(1024, 768));
      		for (int i = 0; i < 16; i++) {
      			JLabel label = new JLabel("Test");
      			add(label);
      		}
      	}
      
      	public void paintComponent(Graphics g) {
      
      		Graphics2D g2 = (Graphics2D) g;
      		System.out.println(getClass().getResource("/images/parchemin.png"));
      
      		ImageIcon ic = new ImageIcon(getClass().getResource(
      				"/images/parchemin.png"));
      		Image fond = ic.getImage();
      
      		g2.drawImage(fond, 0, 0, 1024, 680, this);
      	}
      }
      


      ;-)
      HackTrack
      1