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