package elastiques; /** * Panneau pour afficher le bord. * * @author csuros */ import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.event.MouseAdapter; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JPanel; import javax.swing.Timer; public class BoardPanel extends JPanel { static int DEFAULT_BAND_LENGTH = 100; // longueur des Žlastiques static int SIMULATION_INTERVAL= 10; // en milliseconds public BoardPanel() { this(new Board()); } /** * Instanciation * * @param board le bord qu'on va utiliser */ public BoardPanel(Board board) { super(); setPreferredSize(board.getSize()); this.board = board; balls = new ArrayList(); bands = new ArrayList(); initComponents(); } private Board board; private Cat cat; private ArrayList balls; private ArrayList bands; private Timer simulation_timer; private void initComponents() { // Ë IMPLƒMENTER // il faut initialiser le timer, et la variable cat; // ajouter celui-ci comme listener // Lors d'une action du Timer, il faut recalculer les positions // avec board.computeNewPositions(0.001*SIMULATION_INTERVAL) // et reafficher le bord } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g.create(); for (RubberBand r:bands) r.draw(g2); for (Ball b:balls) b.draw(g2); // Ë IMPLƒMENTER // dessin de l'Žlastique si on est en train d'en placer un } /** * Placement d'une nouvelle boule * * @param x coordonnée x pour le centre * @param y coordonnée y pour le centre * @return la nouvelle boule */ private Ball newBall(int x, int y) { // Ë IMPLƒMENTER // il faut placer la nouvelle boule sur le bord, et // sur la liste balls } /** * Placement d'un élastique * @param left boule à gauche * @param right boule à droit * @return le nouvel élastique */ private RubberBand newBand(Ball left, Ball right) { // Ë IMPLƒMENTER // il faut placer le nouvel Žlastique sur le bord, et // sur la liste bands } /** * Lance la simulation. */ public void startSimulation() { // Ë IMPLƒMENTER } /** * Arrête la simulation. */ public void stopSimulation() { // Ë IMPLƒMENTER } /** * Classe pour gérer les actions du souris */ private class Cat extends MouseAdapter { public void mouseClicked(MouseEvent e) { // Ë IMPLƒMENTER } public void mouseMoved(MouseEvent e) { // Ë IMPLƒMENTER } } }