Bonjour a tous!

Aujourd'hui,un nouveau jour, et donc un nouveau probleme!!!
Alors voila, mon truc c'est que j'affiche en fond dans un JPanel une image (cela ce fait au moment de la creation de ce dernier avec la methode paintComponents), mais lorsque je change d'image de fond, et ben j'arrive pas a raffraichir le JPanel pour que l'on puisse voir la nouvelle image.
Pour ceux qui ont le temps ou que ca interesse, bah je vous met le code du JPanel que j'ai deja fait, et si quelqu'un avait une idee de comment faire le refresh(), et ben ca me sauverai grandement!!!:)
import javax.swing.*;
import java.awt.Image;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
/**
*
* @author farid
*
* La classe ImagePanel permet de créer un Panel permettant d'aficher une image en fond
* Cette classe va nous permettre d'afficher l'image que l'on va charger
*/
public class ImagePanel extends JPanel
{
private BufferedImage image;
private int w; // largeur de l'image
private int h; // hauteur de l'image
private int x,y; // coordonnées du coin sup gauche de l'image
private int x1=0,y1=0; // coordonnées du coin sup gauche de la zone d'annotation
private int x2=0,y2=0; // largeur et hauteur de la zone d'annoation
private int taille=13; //taille de la police de la zone d'annotation
private JTextArea are;
private Color couleurChoisie;
private JColorChooser tcc;
private Choice choixm;
private Image mon_image;
private Toolkit toolkit;
/**
* Le constructeur :
* @param fileImg le fichier de l'image.
* @param x coordonnée x du coin supérieur gauche.
* @param y coordonnée y du coin supérieur gauche.
* @param width largeur de l'image.
* @param height hauteur de l'image.
*/
public ImagePanel(File fileImg,int x,int y,int width,int height)
{
super();
/** Accès au toolkit : **/
toolkit = Toolkit.getDefaultToolkit();
/**si le fichier est vide on charge l'image fichierVide**/
if(fileImg==null)
{
mon_image = toolkit.getImage(this.getClass().getResource("fichierVide.jpg"));
}
/**sinon on recupère l'adresse du fichier selectionné**/
else
{
mon_image=toolkit.getImage(fileImg.getAbsolutePath());
}
/**on convertit l'image en BufferedImage**/
image = toBufferedImage(mon_image);
this.x = x;
this.y = y;
w = width;
h = height;
/**Zone de Texte permettant d'effectuer les annotations**/
are=new JTextArea();
are.setForeground(Color.black);
are.setFont(new Font("Comic sans MS",Font.BOLD,taille));
are.setSelectionColor(Color.yellow);
are.setOpaque(false); //on rend la zone de texte invisible
are.setBorder(BorderFactory.createLineBorder(Color.black));
are.setLineWrap(true); //On souhaite un retour à ligne automatique
are.setWrapStyleWord(true); //On souhaite que les mots ne soient pas coupés
//add(are);
}
/**
* Gere l'affichage graphique du JPanel, ainsi que le refraichissement.
*/
public void paintComponent(Graphics g)
{
Graphics2D g2 =(Graphics2D) g;
super.paintComponent(g2);
g2.drawImage(image,x,y,w,h,null);
}
public void paint( Graphics g )
{
Graphics2D g2 =(Graphics2D) g;
super.paint( g2 );
/**Couleur du rectangle representant la zone d'annotation**/
g2.setColor(couleurChoisie);
/**Degré de transparence de la zone d'annotation (ici transparence = 30% --> 0.3f)**/
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f )); //
/**Tracé du rectangle representant la zone d'annotation**/
g2.fillRect(
x1, // x
y1, // y
x2, // largeur
y2); // hauteur
}
/**
* Gere les evenements de glissement de sourie (bouton presse)
*/
public void mouseDragged(MouseEvent e)
{
x2=(int)(e.getPoint().getX())-x1;
y2=(int)(e.getPoint().getY())-y1;
are.setSize(x2,y2);
this.repaint();
}
/**
* Gerer les evenement lors du deplacement de la sourie
*/
public void mouseMoved(MouseEvent e)
{
}
/**
* Evenement appelle alors d'un clic de sourie
*/
public void mouseClicked(MouseEvent e)
{
}
/**
* Evenement appelle alors que la sourie sort de les frontieres d'un composant
*/
/**
* Gere les evements au moment ou le bouton de la souris est presse
*/
public void mousePressed(MouseEvent e)
{
x1 = (int)(e.getPoint().getX()-7);
y1 = (int)(e.getPoint().getY()-30);
are.setLocation(x1,y1);
}
/**
* Gere les evenements quand le bouton de souris est relache apres glissement
*/
public void mouseReleased(MouseEvent e)
{
}
/**
* Permet de récuperer la couleur du JColorChooser
*/
public Color getCouleur()
{
return couleurChoisie;
}
public BufferedImage toBufferedImage(Image image) {
/* On test si l'image n'est pas déja une instance de BufferedImage */
if( image instanceof BufferedImage ) {
/* cool, rien à faire */
return( (BufferedImage)image );
} else {
/* On s'assure que l'image est complètement chargée */
image = new ImageIcon(image).getImage();
/* On crée la nouvelle image */
BufferedImage bufferedImage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB );
Graphics g = bufferedImage.createGraphics();
g.drawImage(image,0,0,null);
g.dispose();
return( bufferedImage );
}
}
/**
* @return Returns the image.
*/
public BufferedImage getImage() {
return image;
}
/**
* @param image The image to set.
*/
public void setImage(BufferedImage image) {
this.image = image;
}
/**
* @return Returns the mon_image.
*/
public Image getMon_image() {
return mon_image;
}
/**
* @param mon_image The mon_image to set.
*/
public void setMon_image(Image mon_image) {
this.mon_image = mon_image;
}
/**
* @return Returns the h.
*/
public int getH() {
return h;
}
/**
* @param h The h to set.
*/
public void setH(int h) {
this.h = h;
}
/**
* @return Returns the w.
*/
public int getW() {
return w;
}
/**
* @param w The w to set.
*/
public void setW(int w) {
this.w = w;
}
/**
* @return Returns the x.
*/
public int getX() {
return x;
}
/**
* @param x The x to set.
*/
public void setX(int x) {
this.x = x;
}
/**
* @return Returns the x1.
*/
public int getX1() {
return x1;
}
/**
* @param x1 The x1 to set.
*/
public void setX1(int x1) {
this.x1 = x1;
}
/**
* @return Returns the x2.
*/
public int getX2() {
return x2;
}
/**
* @param x2 The x2 to set.
*/
public void setX2(int x2) {
this.x2 = x2;
}
/**
* @return Returns the y.
*/
public int getY() {
return y;
}
/**
* @param y The y to set.
*/
public void setY(int y) {
this.y = y;
}
/**
* @return Returns the y1.
*/
public int getY1() {
return y1;
}
/**
* @param y1 The y1 to set.
*/
public void setY1(int y1) {
this.y1 = y1;
}
/**
* @return Returns the y2.
*/
public int getY2() {
return y2;
}
/**
* @param y2 The y2 to set.
*/
public void setY2(int y2) {
this.y2 = y2;
}
}
Voila et pis merci a tous :)