package linea; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.util.ArrayList; import javax.swing.JPanel; public class ZoneDessin extends JPanel { // hérite d'une classe du frameWork standard private static final long serialVersionUID = 1L; //------------------------------------------------------------------------- // PROPRIETES //------------------------------------------------------------------------- // un booleen qui permet d'arreter l'animation (suspendre) protected boolean estArrete = false; //------------------------------------------------------------------------- // METHODES //------------------------------------------------------------------------- //------------------------------------------------------------------------- // Constructeur de la classe //------------------------------------------------------------------------- public ZoneDessin(){ // on prépare la zone d'affichage setLayout(new BorderLayout()); setPreferredSize(new Dimension(800, 600)); setBackground(new Color(220,170,0)); } //------------------------------------------------------------------------- // Ajout d'un objet graphique à la zonde de dessin //------------------------------------------------------------------------- public void ajouterObjet(ObjetGraphique unObjet) { } //------------------------------------------------------------------------- // Mettre en pause et redémarrer //------------------------------------------------------------------------- public void arreter(){ estArrete = true; } public void demarrer(){ estArrete = false; } //------------------------------------------------------------------------- // Boucle d'animation : // - appelée par exemple 25 fois par seconde // - à chaque appel : // - on anime (déplace) chaque objet // - on redessine tout : appel à paintComponent, déclenché par repaint //------------------------------------------------------------------------- public void traiterBoucleAnimation(){ if (estArrete==true) { return; } // 1. on déplace chaque objet graphique // A FAIRE : décommenter lorsque cela devienda exécutable, et compléter /* for (ObjetGraphique obj : listeObjets){ // A FAIRE : demander à obj de s'animer } */ // 2. on demande à redessiner, ce qui déclenchera automatiquement // l'appel à la méthode paintComponent, qui est ci-dessous repaint(); } //------------------------------------------------------------------------- // Dessin, déclenché par le repaint() de la méthode ci-dessus //------------------------------------------------------------------------- public void paintComponent(Graphics g) { // On demande à la super-classe (JPanel) de se redessiner super.paintComponent(g); // Puis on ajoute ce qui est spécifique à la classe // on indique qu'il faut de l'antialiasing Graphics2D g2D = (Graphics2D) g; g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); // à compléter } }