Affichage Image dans un JPanel

cemoi58 Messages postés 3 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 11 octobre 2005 - 6 sept. 2004 à 15:36
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 6 sept. 2004 à 23:01
Bonjour à tous!
Je voudrais dessiner une image dans un JPanel. Ce JPanel est lui même contenu dans une JDialog. Pour cela, j'écris le code suivant :

JDialog Toto = new JDialog();
Toto.setLocation(0, 0);
Toto.setTitle("Ma fenêtre");

Image PortionImage;
//
...Partie du code où j'attribue une image à ma variable PortionImage
//
JPanel PanneauApercu = new JPanel();
Graphics g =PanneauApercu.getGraphics();
g.drawImage(PortionImage,10, 10,50, 50, null);
Toto.getContentPane().add(PanneauApercu);

Toto.setSize(200,200);
Toto.setVisible(true);

La fenêtre s'affiche correctement quand je supprime la ligne "g.drawImage(PortionImage,10, 10,50, 50, null);" , mais quand je la met ou que je la remplace par "g.drawString("Coucou",20,20);" , l'exception "java.lang.NullPointerException" est levée.

Quelqu'un pourrait-il m'aider SVP?
Merci d'avance!

3 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
6 sept. 2004 à 16:13
utilise le Graphics par la methode paint(Graphics g) des components.
0
cs_Dobel Messages postés 333 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 23 novembre 2009 1
6 sept. 2004 à 17:21
question récurrente ultra commentée sur le forum !!
;p
bonne prog
Dobeliou
[Il ne faut jamais jouer à saute-mouton avec une licorne]
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
6 sept. 2004 à 23:01
GodConan :clown)

Ben vi la reponce est simple : tant que ton panel n est pas visible le contex graphic n est pas disponible... donc null
la soluce comme le suggere wargre serai de faire ton PanelImage heriter de JPanel (par exemple) et d en surcharger la methode paint( graphics g ).
Methode ds laquelle tu fait ton draw et n oublie pas d appeler la methode super au debut... (super.paint( g );) sinon tu aura des ptt surprise ( enfin tu pourra tester plus tard .. ;o) )

++

bonne prog
0
Rejoignez-nous