Problème avec Canvas et drawImage

Résolu
Signaler
Messages postés
7
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
7
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
9 avril 2008
-
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

Messages postés
7
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
9 avril 2008

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;
        }
    }
  
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
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 ?
Messages postés
7
Date d'inscription
dimanche 29 avril 2007
Statut
Membre
Dernière intervention
9 avril 2008

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