-
Canvas et repaint
Hello vous tous,
Je suis en train de m'entrainer un peu en Java pour tester les interfaces graphiques et j'aimerais coder un mini logiciel de dessin qui permet de créer les formes de base (carré, ovale... blabla)
J'utilise la classe canvas d'awt pour dessiner mes formes. Cependant, lorsque j'ajoute une forme supplémentaire à mon canvas, au moment du repaint() je perds les formes précédentes.
Je débute et je ne comprends pas bien comment ça se fait.
Lorsque je fais un drawOval il est bien dessiné, mais si je dessine par dessus un carré, au moment du repaint mon oval disparaît...
Merci d'avance pour votre aide.
-
Bah c'est tout à fait normal, c'est pas le rôle du Canvas de se ouveir de ce qu'il à dessiné au coup précédent. C'est plutôt à toi de stocker les formes à dessiner à chaque fois que tu veux appeler le repaint();.
Donc grosso merdo dans ta classe tu as une collection qui stocke les formes à afficher et dans paint tu parcourres ta collection et fais un draw de la Shape voulue...
C'est pas sorcier...
Ah au fait dans ton appli évite de mélanger AWT et Swing. Si tu veux utiliser la classe Canvas, fais tout en AWT, si tu veux utiliser Swing remplace ton Canvas par un vulgaire JComponent ou JPanel dont tu redéfiniras la méthode
Code:
protected void paintComponent(Graphics g)
-
Merci de ta réponse... C'est bien ce que je pensais avoir compris.
C'est parti pour les listes chainées !
ci@o!
-
Peut être, comme tu débutes, serait-il mieux de préciser que la classe Canvas n'a plus d'utilité, sauf cas totalement exceptionnel. Il vaut mieux te pencher sur les classes de swing, par exemple JComponent et JPanel.