|
|
Disegna quadrati e cerchi con colore e dimensione variabili
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 public static final ... 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 Canvas, paint(), repaint(), Graphics, fillRect(), fillOval() Vector, isEmpty(), addElement(), removeElementAt(), removeAllElements() MouseListener, addMouseListener(), MouseEvent 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 ActionListener, actionPerformed(), ActionEvent, getActionCommand() ItemListener, itemStateChanged(), ItemEvent, getSelectedIndex() |
|