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
J'ai essayé diverses solutions: .imageUpdate sur le JPanel, setBackground qui ne mange que du Color et pas du PNG/JPG/etc...
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 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
Partager