Problème avec Canvas et drawImage

Résolu
cs_Marmarnassouf Messages postés 7 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 9 avril 2008 - 30 mars 2008 à 22:38
cs_Marmarnassouf Messages postés 7 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 9 avril 2008 - 1 avril 2008 à 01:07
Bonsoir,  j'ai une image à afficher dans un canvas, cette image est recupérée d'une base de données dans un fichier .jbg suite à un clique sur une liste de choix, pour la récupération dans le fichier ça passe bien, mais le problème c'est que le contenu du canvas ne change pas quand je clique sur un choix de la list, meme si  le contenu du fichier change, je sais pas quoi faire, j'ai besoin de votre aide.
J'ai utilisé cette classe pour ajouter le canvas et je fais l'appel à la methode paint() mais rien

class MonCanvas extends Canvas
    {
         Image img;
        MonCanvas()
        {
            img=null;
            setSize(240,240);
            setVisible(true);
        }   
       
       
        public void paint(Graphics g)
        {
       
        img=getToolkit().getImage(".\\image\\monImage.jpg");
   
         g.drawImage(img, 50,50,this);
        }
}

3 réponses

cs_Marmarnassouf Messages postés 7 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 9 avril 2008
1 avril 2008 à 01:07
Merci à tout le monde,
j'ai troué la solution: il faut utiliser ImageIO au lieu de Toolkit, le nouveau code du canvas est:
class MonCanvas extends Canvas
    {
        BufferedImage img;
   
        MonCanvas()
        {
           
            setSize(300,240);
            setVisible(true);
        }   
       
        public void paint(Graphics g)
        {
            try{
       
        img = ImageIO.read(new File(".\\image\\monImage.jpg"));
        }
        catch (IOException e) {
            e.printStackTrace();
        }
         g.drawImage(img, 80,50,null);   
        }
       
        public Image getImage()
        {
        return img;
        }
    }
  
3
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 18
30 mars 2008 à 23:13
Salut,

j'ai essayé ton code et ça marche bien chez moi !

Voila ce que j'ai fais :

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class MonCanvas extends Canvas {
    private Image img;
   
    public MonCanvas() {
        img = null;
        setSize(240, 240);
        setVisible(true);
    }
   
    public void paint(Graphics g) {
        img = getToolkit().getImage("smiley.jpg");
        g.drawImage(img, 70, 70, this);
    }
}

class Fenetre extends JFrame {
    public Fenetre() {
        this.getContentPane().add(new MonCanvas(), BorderLayout.CENTER);
       
        this.setPreferredSize(new Dimension(300, 200));
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
   
    public static void main(String[] args) {
        Fenetre f = new Fenetre();
       
    }
}

Tu es sûr du chemin de l'image ?
0
cs_Marmarnassouf Messages postés 7 Date d'inscription dimanche 29 avril 2007 Statut Membre Dernière intervention 9 avril 2008
30 mars 2008 à 23:20
Salut,
oui le chemin est juste car j'ai un affichage de la première image, le problème que durant l'affichage le contenu du fichier de l'image change suite à un événement, mais le nom de l'image est le meme, je veux savoir comment je peux modifier le contenu du canvas lorsque le contenu du fichier est changé sans fermer et relancer l'application, merci d'avance
0