Bonjour à toutes/tous,

Je cherche à changer le fond d'un JPanel sur un ActionPerformed d'un bouton.
Ma frame affiche des produits, avec caractéristiques remplissant du JTextField et à côté, un JPanel que j'ai dérivé en PanelPhoto qui affiche (en théorie) la photo du produit en question.

Je parcours l'ensemble des mes produits avec deux JButton, précédent et suivant.
Lors du premier chargement, aucun problème, monPanelPhoto m'affiche la photo du premier produit en catalogue, mais pour la MàJ, là y'a gros problème.

Voici une classe simple pour mon panel mais qui marche bien

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
 
public class PanelPhoto extends JPanel {
 
    private BufferedImage image;
    private String nomFicImg;
    private int larg;    // largeur de l'image
    private int haut;    // hauteur de l'image
    private int x, y;// coordonnees du coin sup gauche
 
    public PanelPhoto(String _nomFicImg)
    {
        super();
        this.setNomFicImg(_nomFicImg);
        try
        {
            image = null;
            File ficImg = new File(nomFicImg);
            image = ImageIO.read(ficImg);
        }
        catch (IOException e)
        {
            image = null;
            System.out.println("Fichier invalide");
        }
 
        this.larg = image.getWidth();
        this.haut = image.getHeight();
 
        this.x = 0;
        this.y = 0;
 
        setVisible(true);
    }
 
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawImage(image, x, y, larg, haut, null);
    }
}
J'ai essayé diverses solutions: .imageUpdate sur le JPanel, setBackground qui ne mange que du Color et pas du PNG/JPG/etc...
J'ai aussi essayé de voir avec du repaint() sur le JPanel et sur la frame le contenant, mais ça repaint() avec une nouvelle image, si on peut changer les propriétés du panel, que j'ai essayé de faire avec du setX() sur le nom du fichier puis le charger à nouveau, mais je ne peux accéder aux fonctions de ma classe (problème de static ?)

Quelle approche me conseilleriez-vous ?

Par avance, merci
citizenM