# Java > Interfaces Graphiques en Java > AWT/Swing >  Changer le background (image) d'un JPanel

## citizenM

Bonjour  toutes/tous,

Je cherche  changer le fond d'un JPanel sur un ActionPerformed d'un bouton.
Ma frame affiche des produits, avec caractristiques remplissant du JTextField et  ct, un JPanel que j'ai driv en PanelPhoto qui affiche (en thorie) la photo du produit en question.

Je parcours l'ensemble des mes produits avec deux JButton, prcdent et suivant.
Lors du premier chargement, aucun problme, monPanelPhoto m'affiche la photo du premier produit en catalogue, mais pour la MJ, l y'a gros problme.

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...
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 proprits du panel, que j'ai essay de faire avec du setX() sur le nom du fichier puis le charger  nouveau, mais je ne peux accder aux fonctions de ma classe (problme de static ?)

Quelle approche me conseilleriez-vous ?

Par avance, merci
citizenM

----------


## Vrylx

g.drawImage(image, x, y, larg, haut, null);
Tu dessines dans rien ???

----------


## Baptiste Wicht

Il y a un moment, j'avais le meme problme que toi, tu peut russir avec cette classe il me semble : 



```

```

Pour changer l'image par la suite, il te suffira de faire setImage(tonImage);

----------


## bouye

> g.drawImage(image, x, y, larg, haut, null);
> Tu dessines dans rien ???


Il dessine tout simplement dans _g_. 
La valeur du dernier parametre n'a rien a voir avec le pb : il s'agit de passer un _ImageObserver_ qui sera notifie des etapes d'avancement du chargement de l'image si celle-ci a ete chargee de maniere asynchrone. En general mieux vaut mettre _null_, sinon ca a tendance a ralentir de traitement.

----------


## seiryujay

C'est quoi ton "gros problme"? Ca crashe ou a n'affiche pas l'image?

Bon question bte : tu mets bien  jour ton image quand tu cliques sur "prcdent" ou "suivant"? Tu ne fais pas que mettre  jour le fichier, mais tu recres bien une nouvelle image?
Si tu pouvais mettre le code de tes boutons, pour qu'on voit ce que tu fais...

----------


## citizenM

@bouye: Tout  fait bouye, j'allais le dire, mais apparemment, dans son lan de gnrosit, Vrylx s'est enflamm

Celsius 25, c'est le nom qu'il devrait prendre ^^

@seiryujay: l'image ne s'affiche pas, et je teste la version de wichtounet.
En fait, dans une version prcdente, j'utilisais un setImage(String nomDuFic) et je lancais un pseudo repaint() dessus, repaint() qui allait ouvrir la nouvelle image et changeait la proprit, esprant que le repaint allait ouvrir l'image, et afficher la nouvelle image en background.  ::aie:: 
Et j'aime beaucoup ton avatar  ::mrgreen::

----------


## citizenM

@wichtounet:

Merci beaucoup, j'ai implment ton code avec le mien et comme a mon panel marche trs bien, il se met bien  jour  chaque monPanel.setImage().

C'est juste que cet en***r de NetBeans ne me laisse pas typer correctement mon panel dans le type driv que j'ai cr, je suis oblig de le faire manuellement en dehors de NetBeans, si quelqu'un a une ide.

Par dfaut il me met javax.swing.JPanel et non monpackage.PanelPhoto.

Je vais le taper !

 ::aie::  
C'est peut-tre parce que je code sous Mac tiens... Ah les sectaires  ::D:

----------

