IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Problème de mise à jour d'un Canvas


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 59
    Points
    59
    Par défaut Problème de mise à jour d'un Canvas
    Bonjour,

    J'ai créé un canvas, j'arrive a dessiner dessus en redéfinissant la methode paint()

    le problème c'est que j'arrive pas a le modifier avec le methode draw() une fois créé.

    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
    import java.awt.Canvas;
    import java.awt.Color;
    import java.awt.Graphics;
     
    public class MonCanvas extends Canvas
    {
    	public void paint(Graphics g)
    	{
    		g.fillRect(100, 100, 13, 13);
    	}
     
    	public void draw(int x, int y)
    	{
    		Graphics g = this.getGraphics();
    		g.setColor(Color.CYAN);
    		g.fillRect(100, 100, 13, 13);
    		repaint();
    		// update(g);
    	}
    }
    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
    import java.awt.Frame;
     
    public class MonFrame extends Frame
    {
     
    	MonFrame()
    	{
    		setSize(400,400);
    		MonCanvas c = new MonCanvas();
    		add(c);
    		setVisible(true);
    		c.draw(60, 60);
     
    	}
    	public static void main(String []l)
    	{
    		new MonFrame();
    	}
    }
    d'apres la DOC les methodes update() et repaint() doivent resoudre le probleme, mais ca marche pas pour une raison que j'ignore

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Quel que soit le composant AWT, si l'on veut faire des opérations de dessin, il faut que tout le code dessinant sur le composant soit exécuté dans le scope de la méthode paint et il doit absolument utiliser les Graphics fournis en paramètre de la méthode paint.

    La méthode getGraphics de la classe Graphics ne doit en aucun cas être utilisée pour obtenir des Graphics destinés au dessin sur le composant même.

    Donc le code de ta méthode draw est ici le problème.

    Dans ton cas je ferais plutôt quelque chose dans ce genre:



    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
     
    import java.awt.Canvas; 
    import java.awt.Color; 
    import java.awt.Graphics;  
     
    public class MonCanvas extends Canvas {
     
            public void paint(Graphics g) {
                    g.fillRect(100, 100, 13, 13);
                    draw(g,60,60);                
            }       
     
            private void draw(Graphics g, int x, int y) {                  
                    g.setColor(Color.CYAN);
                    g.fillRect(100, 100, 13, 13);
            } 
    }

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    @sinok: merci pour votre reponse, mais ce que je veux moi c'est que je puisse appeler la method draw(x,y) a partir d'un Listener, avec le x et le y saisis par l'utilisateur et passés comme paramètres.

    Alors, si je comprend bien, pour changer un Canvas qui a ete deja créé et affiché, il faut utiliser la method paint (donc redessiner le Canvas à partir du zero) c'est ca?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le plus simple dans ce cas est d'avoir une collection d'objets à dessiner dans ta classe, d'ajouter/retirer des objets via les listeners, et que dans le paint tu dessines tout les objets contenus dans la collection.

    (penser également à appeler la méthode repaint du canvas dans les listeners).

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 54
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par sinok Voir le message
    Le plus simple dans ce cas est d'avoir une collection d'objets à dessiner dans ta classe, d'ajouter/retirer des objets via les listeners, et que dans le paint tu dessines tout les objets contenus dans la collection.

    (penser également à appeler la méthode repaint du canvas dans les listeners).
    c'est ce que j'ai fais, ca marche

    merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème de mise à jour d'une table
    Par SnickeursMan dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 17/01/2006, 11h39
  2. Problème de mise à jour de données avec IBClientDataset
    Par Papino dans le forum Bases de données
    Réponses: 6
    Dernier message: 26/09/2005, 14h04
  3. [2000 Server] Problème de mise à jour windowsupdate !!
    Par rohstev dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 24/08/2005, 15h03
  4. Problème de mise à jour de base de données
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 26/05/2004, 11h38
  5. problème de mise à jour de BD
    Par tidiane dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/03/2004, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo