-
mise à jour d'un Canvas
Bonjour,
je veux apprendre le java, et pour cela, j'ai fait un jeu de dame.
Pour cela, j'utilise une classe grille qui étant Canvas.
J'ai redéfini la methode paint. dans cette methode, j'affiche un fond d'écran: un gif (ma grille),et je lance l'affichage de mes pieces + selecteur.(des gifs aussi).
Le problème est que ça clignote dure.
Que dois-je faire?
(j'aimerais gardé la notion d'un fond d'écran, pour "essayer" de réutiliser ma classe pour afficher autre chose, faire d'autre type de jeux)
J'ai essayé de "conditionner" l'affichage du fond d'écran, pour qu'il ne le fasse qu'une fois, mais je perd a ce moment la le fond d'écran....
Une idée?
-
je rajoute que a chaque fois que je bouge mon selecteur, je lance la méthode paint
-
Remplace le Canvas par JComponent ou JPanel et surcharge paintComponent() au lieu de paint(), ça ne clignotera plus. Attention, cela nécessite d'utiliser Swing et non pas AWT. Si tu veux utiliser AWT il faudra implémenter un système de double-buffering, cf la FAQ. Je te déconseille vivement AWT, notamment parceque Swing dispose de son propre double-buffer.
-
Merci, ça marche bien.
Une petit question : J'ai fait les modifs et mon rendu est strictement similaire à avant (sauf pour le clignotement). Mon canvas est devenu un Jpanel, par contre j'ai chercher sur le net la description exacte de ce composant, avantage inconvénient, pourquoi plutot prendre Jpanel plutot qu'un JComponent. J'ai du mal a trouvé ces renseignements. Quelqu'un a un petit lien? Un site qui n'explique pas les bases de swing, mais qui fourni une liste de composant (uniquement pour l'affichage) avec avantage/inconvenient...
-
Un JComponent ne dessine rien par défaut et est non-opaque. Un JPanel est opaque et dessine une couleur de fond. C'est tout :)