Graphics

didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 15 sept. 2007 à 14:44
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 15 sept. 2007 à 18:06
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) {
        dessinerPoint(a, b);
   }

   [...]
   
   public void dessinerPoint (int a, int b) {
       g.drawRect(a, b, 1, 1);
   }

   [...]

   public void paint (Graphics g) {
      super.paint(g);
   }

}

Lorsque j'exécute la class, j'ai une exception de type NullPointerexception (a la ligne rouge).
Apres m'être renseigné, c'est parce que le composant n'a pas encore été ajouter. Donc comment est ce que je peux faire ?
j'ai pensé à récupérer le graphics du composant apres l'avoir ajouter et le passer en paramètre vers la class G ; au travers d'une fonction "setGraphics(Graphics graphics)"(mais je ne peut pas, il faudrais traiter, a nouveau, les parametres passer pour la construction de la class).

merci de votre aide.

7 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 sept. 2007 à 17:37
moi je ferais :

public class G extends JPanel {

   private Graphics g = this.getGraphics();
    private int a,b;
   public G (int a, int b) {
      this.a =a;
       this.b = b;
   }

   [...]

   public void paint (Graphics g) {
      super.paint(g);
      g.drawRect(a, b, 1, 1);
   }

}

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
15 sept. 2007 à 17:48
Slt.
je reconnais que c'est bcp plus simple que ce que je fais en ce moment. Cependant, je ne peut pas utiliser cette méthode car dans cette même class, il y a plusieurs fonctions qui dessinent des choses différentes. Donc si je regroupe tout dans une même méthode "paint(...)", je dois traiter "quelle est la demande" "quels sont les paramètres" ... ce qui va être plus long et au final, je pense, moins lisible.

merci.
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 sept. 2007 à 17:50
stu veux mais le pb c'est que le graphics qui est passe en param tu ne pourras pas le passer toi meme donc au final tu auras un code aussi complique me semble-t-il

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
15 sept. 2007 à 17:55
C'est-à-dire ?

le code pour passer en param :

public class test {
public static void main (String arg[]) {

//La class de dessin
G dessin = new G();

//La fenetre
JFrame f = new JFrame("teste");
f.setSize(400, 400);
f.getContentPane().add(dessin);
f.setVisible(true);

//Passage en parametre
dessin.setGraphics(dessins.getGraphics());

//On dessine qqc
dessin.qcc();

}
}

voila. ca c'est le code auquel je pensais, mais je ne sais pas si il fonctionne corretement.

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

Posez votre question
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 sept. 2007 à 17:56
test mais bon l'avantage avec le surchargeage de paintComponent c'est que tu n'auras jamais de probleme avec graphics

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
15 sept. 2007 à 18:05
Apparemment ca ne fonctionne pas, rien n'est dessiné dans la fenêtre.
j'vais voir ce que ca donne avec la surcharge de la méthode paint.
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 sept. 2007 à 18:06
mea culpa :

public void paintComponent (Graphics g) {
      super.paintComponent(g);
      g.drawRect(a, b, 1, 1);
   }

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
Rejoignez-nous