Surcharge de la methode paint()

javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007 - 24 avril 2007 à 15:25
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007 - 26 avril 2007 à 14:33
Bonjour a ts

j'ai un probleme avec la méthode paint

j'ai crée une classe mére dans laquelle je surchage une méthode paint pour traçer

et j'ai crée une classe fille qui herite de cette classe mére le
probleme que j'ai c'est que quand  j'apel la methode paint de la
classe mére  avec super.paint(g)  ça ne marche pas???

et voici le code :

partie du code de la classe mére:


 public class JCanvas extends JPanel{

    public static List drawables = new LinkedList();

    public static List h = new LinkedList();


    public int i_paint=0;

    public int i_rect=0;

    public void paint(Graphics g) {

        super.paint(g);   //pour effacer l'ecran      

        g.drawString("peinture rectangle"),1,40);

        }

    }

et voici le code de la classe fille

public class Charger extends JCanvas {

...

..

..

..

public void ajouter() {

        Graphics g = getGraphics();  

        int i;

        for (i=0;i<Liste.size();i++) {

            IDrawable rect = createDrawable(i);

            drawables.add(rect);

            System.out.println(drawables.size());

            super.paint(g);

 
}

}

je voudrai savoir est ce que c un probleme lié a l'heritage ??

personne n'as une idée???

13 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 avril 2007 à 15:33
Au lieu de surcharger la méthode paint, surcharge plutôt la méthode paintComponent car sinon tu risque d'avoir des surprises...

sinon ton code me semble correct ! Le paint de la classe mère devrait être appelé normalement, je vois pas ce qui peut clocher.
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
24 avril 2007 à 15:50
merci bien pour la reponse vite!!

je viens d'essayer et en fait ça marche pas

a votre avis c pas un probleme de Graphics g = getGraphics();  ??
parce que a la fin d'execution du programme le pointeur pointe sur le g de la classe mére?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 avril 2007 à 16:06
Non non, le getGraphics() te renvoie le Graphics de ta classe (en l'occurence celui de ton JCanvas qui hérite du JPanel).
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
24 avril 2007 à 16:13
merci bien

le terminal il m'affiche java.lang.NullPointerException
ça veux dire quoi par rapport a mon exemple?svp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 avril 2007 à 16:40
Ben là comme cà, je peux pas te dire !

Il doit au moins t'afficher la ligne correspondante !

Cela veut dire que tu essaye d'utiliser un pointeur (variable) non initialisé.
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
24 avril 2007 à 16:58
merci bien

il pointe sur la ligne g.setColor(Color.blue)

que j'ai utilise dans une autre classe??
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 avril 2007 à 17:03
heu... sans doner le code entourant l'erreur, je vois pas ce que je peux faire pour toi...
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
25 avril 2007 à 09:39
Bonjour et merci pour votre aide


le code entourant l'erreur:

c'est dans la classe mére exactement dans la methode paint()

en fait ça marche la methode paint le probleme c'est que quand je
l'apel a partir de classe fille ça ne marche pas et voici le code:


public class JCanvas extends JPanel{
public int i_paint=0;
public  void paint(Graphics g) {

     super.paint(g);

    g.drawString("appel paintcomponent//le complilateur
pointe
"+String.valueOf(i_paint++),1,20);              
//ici

       

           

       

    }

......

.....


   
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 avril 2007 à 09:55
Fait un System.out.println(g); au niveau de ton appel à partir de la classe fille voir si le Graphics est null ou pas.
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
25 avril 2007 à 10:02
merci bcp

je viens de mettre un System.out.println(g); juste avant l'appel a la classe mére et j'ai trouvée que le Graphics est null!!

que pensez vous de faire aprés???
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
25 avril 2007 à 10:53
est ce qu'il ya moyen pour recharger le g ??

merci d'avance
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
25 avril 2007 à 14:16
Est-ce que ta frame est affichée avant l'appel à la méthode Paint ?

Je ne sais pas quand le Graphics est crée au juste, mais ca peut venir de là.
0
javamen33 Messages postés 46 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 3 mai 2007
26 avril 2007 à 14:33
merci bcp quand meme

le probleme je l'ai reglé et c'était un probleme lié au panel cette fois ci j'ai rechargé le panel et ça marche

et merci infiniment!!!et a bientot
0
Rejoignez-nous