Des disques qui persistent
Des disques qui persistent
On souhaite maintenant que le tracé des disques ne disparaisse pas si la fenêtre est momentanément cachée. On va pour cela compléter le programme obtenu à l'issue de l'exercice précédent.
Au moment de chaque clic, on mémorise le "Disque" tracé en l'ajoutant à un "ArrayList" de façon à pouvoir retracer l'ensemble des "Disque(s)" quand cela est nécessaire.
Indications
- Pour la classe ArrayList :
- elle sert à gérer un tableau d'"Object(s)" ;
- elle appartient au paquetage java.util ;
- on lui ajoute un élément par sa méthode add ;
- si liste est un "ArrayList", on peut faire la liste des éléments rangés dans liste en utilisant liste.get(i) avec i entier qui varie de 0 a liste.size() - 1 ;
La classe ArrayList est générique ; si on veut mettre des objets de type Forme dans un ArrayList, on définira et on instancier la classe ArrayList par :
- ArrayList<Forme> liste = new ArrayList<Forme>();
- Beaucoup de composants graphiques du paquetage javax.swing (dont la classe JPanel) possèdent une méthode :
- public void paintComponent(Graphics g);
cette méthode est appelée automatiquement quand il est nécessaire de tracer à l'écran le composant concerné (à l'ouverture de la fenêtre et si la fenêtre a été momentanément cachée) ; il faut redéfinir cette méthode si on veut faire des tracés qui ne disparaissent pas dans le cas où la fenêtre est momentanément cachée ; les tracés seront alors nécessairement effectués avec le contexte graphique g reçu en paramètre et on invoquera super.paintComponent(g) avant d'effectuer dans le corps de la méthode ses propres dessins.
- On redéfinira la méthode paintComponent dans la classe PanneauDessin pour y tracer l'ensemble des "Disque(s)" contenus dans l'objet ArrayList.
Corrigé
Irene Charon
Last modified: Wed Feb 14 12:58:48 MET 2007