Bonjour,
Dans le cadre d'un TP en Java où l'on me fournit le code d'une application graphique, je dois remplacer l'affichage passif actuel par un affichage actif. Cependant, même en faisant des recherches et pour le peu d'informations que j'ai trouvé, je ne vois pas la différence en termes de code.
Apparemment avec l'affichage passif, le rendu est effectué par l'OS où c'est lui qui redessine quand c'est nécessaire et fait l'appel à paint() tout seul après que le programmeur est fait l'appel à repaint() lors de la mise à jour. En affichage actif, le rendu est fait dans un boucle où on a le total contrôle sur ce qui doit être redessiné.
Globalement j'ai 2 classes :
- un modèle avec un run() qui contient l'appel à setChanged() et notifyObservers().
- une vue avec un update() qui contient l'appel à repaint() qui lui-même fait appel à paint() que je redéfinis et qui dessine les éléments graphiques de l'application.
La seule chose que j'ai compris pour le moment, c'est qu'à la place de faire appel à repaint() dans la mise à jour, je fais appel à une fonction myRenderingLoop() par exemple que je crée et qui doit contenir quelque chose comme ça d'après la documentation :
public void myRenderingLoop() {
while (!done) {
Graphics myGraphics = getPaintGraphics();
// Draw as appropriate using myGraphics
myGraphics.dispose();
}
}
et où le contenu de la fonction devrait être le même que celui que je faisais dans paint(). En bref, j'ai pas trop compris comment ça marche... Quelqu'un pourrait-il m'expliquer en clair et également me donner un petit exemple d'implémentation de code que je devrais faire car je ne comprends pas 