Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme Méthode Paint et ActionListener [ Divers / Débutant(e) ] (Karibou95)

samedi 4 octobre 2008 à 10:49:51 | Probleme Méthode Paint et ActionListener

Karibou95

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.

samedi 4 octobre 2008 à 12:11:37 | Re : Probleme Méthode Paint et ActionListener

uhrand

Réponse acceptée !
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();
    }
}

samedi 4 octobre 2008 à 12:17:02 | Re : Probleme Méthode Paint et ActionListener

Karibou95

merci beaucoup ! l'exemple met tres utilie :)



Cette discussion est classé dans : int, class, rectangle, repere, canvas


Répondre à ce message

Sujets en rapport avec ce message

Appel de classes semblables [ par colruyt ] Bonjour à tous,Voici le problème qui se pose à moi :Dans ma classe principale , je fait appel à 2 classes et chacunes de celle-ci affiche le contenu d calculer la taille max pour une font dans un rectangle [ par poyou ] salut a tous,je désirerais programmer une fonction du ptototype suivant:int getMaxpointSize(Font f, int largeur,int longueur, int size, String txt)cet Probleme positionnement avec conteneur [ par fred889944 ] Bonjour a tous, j'ai un probleme de Conteneur pour une interface graphique. Je chercher depuis des jours, mais sans resultat ... J'ai vraiment besoin Problème de "Freeze" avec JOGL (avec display et init vide) [ par threadom ] Bonjour, (Vous avez vu j'y pense :p)    Je vais vous exposé mon problème. J'ai donc créer un simple applet utilisant JOGL, cependant en le lancant via Graphics [ par didoux95 ] Bonjour à tous.j'ai une class de la forme :public class G extends JPanel {   private Graphics g = this.getGraphics();   public G (int a, int b) {      Selection du type avec implémentation [ par jbaymoh ] Bonjour,J'ai un projet a rendre cette semaine en java et je bloque sur la selection du type grace a l'implementation.class Robot{int nrj=1500;Cerveau Package & heritage en JAVA [ par MrFidel ] Bonjour, Voici donc mon problème : J'ai creé deux classes A et B dans le package nommé P1 (B est une classe fille de A) : ******************* gestion des evenements dans une jtable [ par hm06 ] HELP!!!!! s'il vout plait g besoin de quelqu'un pour m'aider!!! j'ai une jtable qui liste des données provenant d'un ResultSet. Quand j'edite une cell Appel d'une classe depuis une autre [ par colruyt ] Bonjour a tous ,J'ai une classe qui fonctionne bien exécutée seule par contre quand je l'appelle depuis une autre , cela ne fonctionne pas !Si quelqu' pb class package [ par benohite ] bonjour,j ai cree une classe BoutGeneral place dans le package frame.boutgralla compilation de cette classe se passe sans pblorsque j importe cette cl


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.