Applet > Quadrati e cerchi

Disegna quadrati e cerchi con colore e dimensione variabili

Figura.java:

import java.awt.*;
 
public class Figura
{
    public static final String QUADRATO="Quadrato";
    public static final String CERCHIO ="Cerchio";
 
    public Point  punto;
    public String forma;
    public Color  colore;
    public int    dimensione;
 
    public Figura(Point np, String nf, Color nc, int nd)
    {
       punto =np;
       forma =nf;
       colore=nc;
       dimensione=nd;
    }
}

Osserva

  1. public static final ...
  2. Point, Color

Area.java:

import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
 
public class Area extends    Canvas
                  implements MouseListener
{
    private Color  colore;
    private String forma;
    private int    dimensione;
    private Vector vettore;
 
    public Area()
    {
       colore=Color.black;
       forma=Figura.QUADRATO;
       dimensione=5;
       vettore = new Vector();
       addMouseListener(this);
    }
    public void setColore(Color nc)   { colore=nc;     }
    public void setForma(String nf)   { forma=nf;      }
    public void setDimensione(int nd) { dimensione=nd; }
    public void annulla()
    {
       if(!vettore.isEmpty())
       {
          vettore.removeElementAt(vettore.size()-1);
          repaint();
       }
    }
    public void pulisci()
    {
       if(!vettore.isEmpty())
       {
          vettore.removeAllElements();
          repaint();
       }
    }
    public void paint(Graphics g)
    {
       for(int i=0; i < vettore.size(); i++)
       {
          Figura figura=(Figura)vettore.elementAt(i);
          int x=figura.punto.x;
          int y=figura.punto.y;
          int dim=figura.dimensione;
          g.setColor(figura.colore);
          if(figura.forma.equals(Figura.QUADRATO))
             g.fillRect(x-(dim/2), y-(dim/2), dim, dim);
          else if(figura.forma.equals(Figura.CERCHIO))
             g.fillOval(x-(dim/2), y-(dim/2), dim, dim);
       }
    }
    public void mousePressed(MouseEvent e)
    {
       Point  punto =new Point(e.getX(), e.getY());
       Figura figura=new Figura(punto, forma, colore, dimensione);
       vettore.addElement(figura);
       repaint();
    }
    public void mouseReleased(MouseEvent e) { }
    public void mouseEntered(MouseEvent e)  { }
    public void mouseExited(MouseEvent e)   { }
    public void mouseClicked(MouseEvent e)  { }
}

Osserva

  1. Canvas, paint(), repaint(), Graphics, fillRect(), fillOval()
  2. Vector, isEmpty(), addElement(), removeElementAt(), removeAllElements()
  3. MouseListener, addMouseListener(), MouseEvent
  4. mousePressed(), mouseReleased(), mouseEntered(), mouseExited(), mouseClicked()

a_quad_cerc.java:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
 
public class a_quad_cerc extends    Applet
                          implements ActionListener,
                                     ItemListener
{
    private String[] sFORME=
    {
       Figura.QUADRATO, Figura.CERCHIO
    };
    private Color[] cCOLORI=
    {
       Color.black    , Color.blue   , Color.cyan  ,
       Color.darkGray , Color.gray   , Color.green ,
       Color.lightGray, Color.magenta, Color.orange,
       Color.pink     , Color.red    , Color.white ,
       Color.yellow
    };
    private String[] sCOLORI=
    {
       "Nero"         , "Blu"    , "Azzurro"  ,
       "Grigio scuro" , "Grigio" , "Verde"    ,
       "Grigio chiaro", "Magenta", "Arancione",
       "Rosa"         , "Rosso"  , "Bianco"   ,
       "Giallo"
    };
    private String[] sDIMENSIONI=
    {
       "5", "10", "15", "20", "25", "30", "35", "40", "45", "50"
    };
    private int[] iDIMENSIONI=
    {
       5, 10, 15, 20, 25, 30, 35, 40, 45, 50
    };
    private Choice forma  , colore , dimensione;
    private Button pulisci, annulla;
    private Area   area;
 
    public void init()
    {
       forma=new Choice();            for(int i=0; i < sFORME.length; i++)
                                         forma.add(sFORME[i]);
                                      forma.addItemListener(this);
       colore=new Choice();           for(int i=0; i < sCOLORI.length; i++)
                                         colore.add(sCOLORI[i]);
                                      colore.addItemListener(this);
       dimensione=new Choice();       for(int i=0; i < sDIMENSIONI.length; i++)
                                         dimensione.add(sDIMENSIONI[i]);
                                      dimensione.addItemListener(this);
       annulla=new Button("Annulla"); annulla.addActionListener(this);
       pulisci=new Button("Pulisci"); pulisci.addActionListener(this);
       Panel comandi=new Panel();     comandi.add(forma);
                                      comandi.add(colore);
                                      comandi.add(dimensione);
                                      comandi.add(annulla);
                                      comandi.add(pulisci);
       area=new Area();
       setLayout(new BorderLayout()); add(comandi, BorderLayout.SOUTH);
                                      add(area, BorderLayout.CENTER);
    }
    public void actionPerformed(ActionEvent ae)
    {
       String nome=ae.getActionCommand();
 
       if(nome.equals("Annulla"))       area.annulla();
       else if(nome.equals("Pulisci"))  area.pulisci();
    }
    public void itemStateChanged(ItemEvent ie)
    {
       int scelta;                           // aggiorna tutto...
       scelta=forma.getSelectedIndex();      area.setForma(sFORME[scelta]);
       scelta=colore.getSelectedIndex();     area.setColore(cCOLORI[scelta]);
       scelta=dimensione.getSelectedIndex(); area.setDimensione(iDIMENSIONI[scelta]);
    }
}

Osserva

  1. ActionListener, actionPerformed(), ActionEvent, getActionCommand()
  2. ItemListener, itemStateChanged(), ItemEvent, getSelectedIndex()