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

Signaler
Messages postés
13
Date d'inscription
mardi 27 février 2007
Statut
Membre
Dernière intervention
17 octobre 2008
-
Messages postés
13
Date d'inscription
mardi 27 février 2007
Statut
Membre
Dernière intervention
17 octobre 2008
-
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.
A voir également:

2 réponses

Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
10
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();
    }
}
Messages postés
13
Date d'inscription
mardi 27 février 2007
Statut
Membre
Dernière intervention
17 octobre 2008

merci beaucoup ! l'exemple met tres utilie :)