Java : méthode painComponent jamais appelée

velociraptor -  
 velociraptor -
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
A voir également:

2 réponses

Utilisateur anonyme
 
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
velociraptor
 
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