Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Applet: quadrati e cerchi

Precedente
SUPERIORE
Successiva

Disegna quadrati e cerchi con colore e dimensione variabili

Il tuo browser non supporta l'applet Java

Codice Html

<applet code="a_quad_cerc.class" width="640" height="480"></applet>

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()

Applet: quadrati e cerchi - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva