Je trouve les Graphics bien mystérieux

Je trouve les Graphics bien mystérieux - Java - Programmation

Marsh Posté le 07-04-2004 à 00:41:09    

J'ai une classe X extends JApplet et deux classes Y, Z extends JPanel. J'ai déclaré une instance de Y et une de Z dans X, et ces deux JPanel sont chacun leur tour montré/caché avec show()/hide().  
 
J'ai plusieurs souci avec les Graphics, dont celui ci : dans Z, un getGraphics() semble ne pas toujours désigner le même "plan de travail". Ca semble en effet dépendre de la méthode qui appelle et du moment ou cela est fait (par rapport à l'éxécution du programme).
 
Mais bon, je me dis que c'est comme ça... je bidouille jusqu'à ce que ça marche. Par contre là y'a vraiment un truc qui m'étonne :
 
getGraphics().setColor(Color.red);
getGraphics().drawString("PAUSE",50,50);
 
Ces deux instructions sont sur deux lignes consécutives, dans le même bloc d'instruction de la même méthode, et pourtant le résultat est le suivant : le texte s'affiche mais pas en rouge !
 
Par contre dans la méthode paint(Graphics g) :
 
g.setColor(Color.red);
g.drawString("PAUSE",50,50);
 
aura bien l'effet souhaité.
 
 
Pourquoi ça ne marche pas dans le premier exemple ?! Dois je lire 50 pages de doc en anglais pour saisir toute la nuance de ce fonctionnement qui parait si étrange ??

Reply

Marsh Posté le 07-04-2004 à 00:41:09   

Reply

Marsh Posté le 07-04-2004 à 16:41:25    

Je sais pas ce que renvoie getGraphics, j'ai pas assez lu les sources pour ca. Mais il se peut que le Graphics renvoye soit cree a chaque appel de getGraphics (et il me semble que c'est ce qu'il se passe). Dans ce cas le setColor et le drawString ne s'effectue pas sur le meme objet.
 
Donc tu doit faire
 

Citation :


Code :
  1. Grphics g = getGraphics();
  2. g.setColor(......);
  3. g.drawString("......" );



Reply

Marsh Posté le 07-04-2004 à 16:47:14    

Oui c'était bien ca, merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed