Probleme Méthode Paint et ActionListener [Résolu]

Messages postés
13
Date d'inscription
mardi 27 février 2007
Dernière intervention
17 octobre 2008
- - Dernière réponse : Karibou95
Messages postés
13
Date d'inscription
mardi 27 février 2007
Dernière intervention
17 octobre 2008
- 4 oct. 2008 à 12:17
Bonjour à tous :)

Voici mon probleme :

J'ai une class Repere_Canavas dans laquelle j'ai la méthode paint, jusqu'a la tout va bien mon canvas s'affiche convenablement et je peux crée des rectangle etc....

A present j'ai une class Bouton_Rectangle qui implements ActionListener, et
grâce à cette class je voudrais que lorque l'on appuis sur mon bouton Bouton_Rectangle un rectangle apparaisse sur mon canvas.

Mais voila il y'a un probleme :'( dans ma méthode paint de la classe Repere_canvas j'ai graphics g donc quand je veux ajouter un rectangle il me suffit de faire g.fillrect(int,int,int,int) mais je ne peux pas faire appelle à g dans ma class Bouton_Rectangle :'(

comment faire ?


P.S : j'ai essayé de faire appelle au constructeur de ma class Repere_Canvas dans ma class Bouton_Repere comme ceci :

Repere_Canvas w = new Repere_Canvas;
w.fillRect(int,int,int,int);
w.setColor(Color.RED);
w.repaint();

mais ça ne marche pas le w n'est pas reconnu.



merci pour vos reponses.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
493
Date d'inscription
samedi 20 mai 2006
Dernière intervention
15 juillet 2012
5
3
Merci
Nous pouvons dessiner sur une image et dessiner cette image dans paint. Dans l'exemple suivant, l'objet "Repere_Canvas" est passé au bouton dans son constructeur. "Repere_Canvas" a une méthode getG2d() qui retourne l'objet Graphics2D de l'image. Alors le bouton dessine simplement sur cet objet Graphics2D et appel repaint() pour l'objet "Repere_Canvas".

import java.awt.*;
import java.awt.event.*;

/*
 ***************************************************************
 * Sample program which demonstrates the basic paint
 * callback mechanism in the AWT.
 ***************************************************************
 */
import java.awt.image.BufferedImage;

public class PaintDemo {

    public static void main(String[] args) {
        Frame f = new Frame("PaintDemo");
        f.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        Repere_Canvas panel = new Repere_Canvas(Color.yellow);
        f.add(panel, BorderLayout.CENTER);
        Bouton_Rectangle bt = new Bouton_Rectangle(panel);
        f.add(bt, BorderLayout.NORTH);
        f.pack();
        f.setVisible(true);
    }
}

/**
 * Note: Canvas is a heavyweight superclass, which makes
 * Repere_Canvas also heavyweight.  To convert this class to
 * a lightweight, change "extends Canvas" to "extends Component".
 */
class Repere_Canvas extends Canvas {

    private BufferedImage image;
    private Graphics2D g2d;

    public Repere_Canvas(Color color) {
        setForeground(color);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300, 300);
    }
    /*
     * Paint when the AWT tells us to...
     */

    @Override
    public void paint(Graphics g) {
        if (image == null) {
            image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
            g2d = (Graphics2D) image.getGraphics();
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            g2d.setColor(getForeground());
        }
        Rectangle r = g.getClipBounds();
        g.drawImage(image, r.x, r.y, r.width + r.x, r.height + r.y,
                r.x, r.y, r.width + r.x, r.height + r.y, null);
    }

    public Graphics getG2d() {
        return g2d;
    }
}

class Bouton_Rectangle extends Button implements ActionListener {

    private Repere_Canvas repere_Canvas;

    public Bouton_Rectangle(Repere_Canvas repere_Canvas) {
        super("Bouton_Rectangle");
        this.repere_Canvas = repere_Canvas;
        addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        Graphics g = repere_Canvas.getG2d();
        g.fillRect(100, 100, 100, 100);
        repere_Canvas.repaint();
    }
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 124 internautes nous ont dit merci ce mois-ci

Commenter la réponse de uhrand
Messages postés
13
Date d'inscription
mardi 27 février 2007
Dernière intervention
17 octobre 2008
0
Merci
merci beaucoup ! l'exemple met tres utilie :)
Commenter la réponse de Karibou95

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.