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 :
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 !
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 ??
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Xavier Tarrago
Dans les environnement graphiques, on ne redessine rien de sa propre initialive. On redessine quand le toolkit le demande. La méthode qui utilise le Graphics g passé par paint est la bonne. Dans l'autre méthode, le problème vient probablement du fait que getGraphics() ne retourne pas toujours le même objet. Peut-être que Graphics g = getGraphics(); g.setColor(Color.red); g.drawString("PAUSE",50,50); marcherait mieux. Mais encore une fois, c'est chercher les ennuis. En effet, le Graphics qui est passé par paint est configuré en fonction du contexte (clip, foreground, doublebuffer, ...). C'est celui-là qu'il faut utiliser.
"SoULiaNe" a écrit dans le message de news:c4vbu6$jng$
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 :
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 !
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 ??
Dans les environnement graphiques, on ne redessine rien de sa propre
initialive. On redessine quand le toolkit le demande. La méthode qui utilise
le Graphics g passé par paint est la bonne.
Dans l'autre méthode, le problème vient probablement du fait que
getGraphics() ne retourne pas toujours le même objet. Peut-être que
Graphics g = getGraphics();
g.setColor(Color.red);
g.drawString("PAUSE",50,50);
marcherait mieux. Mais encore une fois, c'est chercher les ennuis. En effet,
le Graphics qui est passé par paint est configuré en fonction du contexte
(clip, foreground, doublebuffer, ...). C'est celui-là qu'il faut utiliser.
"SoULiaNe" <cossaNOSPAM@ulp.u-strasbg.fr> a écrit dans le message de
news:c4vbu6$jng$1@news.u-strasbg.fr...
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 :
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 !
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 ??
Dans les environnement graphiques, on ne redessine rien de sa propre initialive. On redessine quand le toolkit le demande. La méthode qui utilise le Graphics g passé par paint est la bonne. Dans l'autre méthode, le problème vient probablement du fait que getGraphics() ne retourne pas toujours le même objet. Peut-être que Graphics g = getGraphics(); g.setColor(Color.red); g.drawString("PAUSE",50,50); marcherait mieux. Mais encore une fois, c'est chercher les ennuis. En effet, le Graphics qui est passé par paint est configuré en fonction du contexte (clip, foreground, doublebuffer, ...). C'est celui-là qu'il faut utiliser.
"SoULiaNe" a écrit dans le message de news:c4vbu6$jng$
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 :
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 !
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 ??
Josef Garvi
Xavier Tarrago wrote:
Dans les environnement graphiques, on ne redessine rien de sa propre initialive. On redessine quand le toolkit le demande. La méthode qui utilise le Graphics g passé par paint est la bonne. Dans l'autre méthode, le problème vient probablement du fait que getGraphics() ne retourne pas toujours le même objet. Peut-être que Graphics g = getGraphics(); g.setColor(Color.red); g.drawString("PAUSE",50,50); marcherait mieux. Mais encore une fois, c'est chercher les ennuis. En effet, le Graphics qui est passé par paint est configuré en fonction du contexte (clip, foreground, doublebuffer, ...). C'est celui-là qu'il faut utiliser.
...donc lorsque tu veux imprimer ton message "PAUSE":
* marque un variable drapeau pour la pause * appelle myComponent.repaint() * dans ta fonction paint(Graphics g), ajoute un if qui dessine le texte "PAUSE" si le drapeau est marqué.
Avantage? Même si l'utilisateur change de programme ou change la taille de ta fenêtre, il retrouvera l'écran correctement dessiné à son retour.
-- Josef Garvi
"Reversing desertification through drought tolerant trees" http://www.eden-foundation.org/
new income - better environment - more food - less poverty
Xavier Tarrago wrote:
Dans les environnement graphiques, on ne redessine rien de sa propre
initialive. On redessine quand le toolkit le demande. La méthode qui utilise
le Graphics g passé par paint est la bonne.
Dans l'autre méthode, le problème vient probablement du fait que
getGraphics() ne retourne pas toujours le même objet. Peut-être que
Graphics g = getGraphics();
g.setColor(Color.red);
g.drawString("PAUSE",50,50);
marcherait mieux. Mais encore une fois, c'est chercher les ennuis. En effet,
le Graphics qui est passé par paint est configuré en fonction du contexte
(clip, foreground, doublebuffer, ...). C'est celui-là qu'il faut utiliser.
...donc lorsque tu veux imprimer ton message "PAUSE":
* marque un variable drapeau pour la pause
* appelle myComponent.repaint()
* dans ta fonction paint(Graphics g), ajoute un if qui dessine le texte
"PAUSE" si le drapeau est marqué.
Avantage? Même si l'utilisateur change de programme ou change la taille de
ta fenêtre, il retrouvera l'écran correctement dessiné à son retour.
--
Josef Garvi
"Reversing desertification through drought tolerant trees"
http://www.eden-foundation.org/
new income - better environment - more food - less poverty
Dans les environnement graphiques, on ne redessine rien de sa propre initialive. On redessine quand le toolkit le demande. La méthode qui utilise le Graphics g passé par paint est la bonne. Dans l'autre méthode, le problème vient probablement du fait que getGraphics() ne retourne pas toujours le même objet. Peut-être que Graphics g = getGraphics(); g.setColor(Color.red); g.drawString("PAUSE",50,50); marcherait mieux. Mais encore une fois, c'est chercher les ennuis. En effet, le Graphics qui est passé par paint est configuré en fonction du contexte (clip, foreground, doublebuffer, ...). C'est celui-là qu'il faut utiliser.
...donc lorsque tu veux imprimer ton message "PAUSE":
* marque un variable drapeau pour la pause * appelle myComponent.repaint() * dans ta fonction paint(Graphics g), ajoute un if qui dessine le texte "PAUSE" si le drapeau est marqué.
Avantage? Même si l'utilisateur change de programme ou change la taille de ta fenêtre, il retrouvera l'écran correctement dessiné à son retour.
-- Josef Garvi
"Reversing desertification through drought tolerant trees" http://www.eden-foundation.org/
new income - better environment - more food - less poverty