Corrigé du TP 3 : programme de dessin, classe Forme

import javax.swing.JApplet;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Vector;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
 
abstract class Forme
{
    Color couleur=Color.blue;
    abstract void dessiner(Graphics g);
}
 
class Cercle extends Forme
{
    Point centre;
    int rayon;
    void dessiner(Graphics g)
    {
        g.setColor(couleur);
        g.drawOval(centre.x-rayon,centre.y-rayon,2*rayon,2*rayon);
    }
    Cercle(int x,int y,int _rayon)
    {
        centre=new Point(x,y);
        rayon=_rayon;
    }
}
 
class Carre extends Forme
{
    Point coin;
    int largeur;
    void dessiner(Graphics g)
    {
        g.setColor(couleur);
        g.drawRect(coin.x,coin.y,largeur,largeur);
    }
    Carre(int x,int y,int _largeur)
    {
        coin=new Point(x,y);
        largeur=_largeur;
    }
}
 
public class DessinFormes extends JApplet implements MouseListener, KeyListener
{
    Vector formes=new Vector();
    int taille=10;
 
    public void init()
    {
        System.out.println("Bonjour, je m'initialise");
        requestFocus();
        addKeyListener(this);
        addMouseListener(this);
    }
 
    public void keyPressed(KeyEvent e) {}
    public void keyReleased(KeyEvent e){}
    public void keyTyped(KeyEvent e)
    {
        switch(e.getKeyChar())
        {
        case '+': taille++;break;
        case '-': taille--;break;
        }
    }
 
    public void mouseEntered (MouseEvent e) {}
    public void mouseExited  (MouseEvent e) {}
    public void mousePressed (MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseClicked (MouseEvent e)
    {
        System.out.println("Position:" + e.getX() + "," + e.getY());
        switch((int)(Math.random()*2))
        {
        case 0:
            formes.add(new Cercle(e.getX(),e.getY(),taille));
            break;
        case 1:
            formes.add(new Carre(e.getX(),e.getY(),taille));
            break;
        }
        repaint();
    }
 
    public void paint (Graphics g)
    {
        g.clearRect(0,0,getWidth(),getHeight());
        g.drawString ("Bonjour", 50, 25);
        for(int i=0;i<formes.size();i++)
        {
            ((Forme)formes.get(i)).dessiner(g);
        }
        requestFocus();
    }
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>