Utilizzando gli adattatori scompaiono i metodi per gli eventi non utilizzati
import java.awt.*; import java.awt.event.*; public class ProvaDisegnoManoLibera { public static void main(String[] args) { FrameManoLibera f=new FrameManoLibera("Disegno a mano libera"); f.setLocation(300,300); f.setVisible(true); } } class FrameManoLibera extends Frame implements ActionListener, ItemListener { 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" }; Choice sceltaColore; Color coloreCorrente; int lastX, lastY; FrameManoLibera(String s) { this.setTitle(s); this.setSize(480,360); this.setResizable(false); this.setLayout(new FlowLayout()); this.addWindowListener(new WA()); this.addMouseListener(new MA()); this.addMouseMotionListener(new MMA()); sceltaColore = new Choice(); sceltaColore.addItemListener(this); for(int i=0; i < sCOLORI.length; i++) sceltaColore.add(sCOLORI[i]); this.add(sceltaColore); Button pulisci= new Button("PULISCI"); pulisci.addActionListener(this); this.add(pulisci); coloreCorrente=cCOLORI[0]; } public void actionPerformed(ActionEvent e) // Button pulisci { Graphics cg=getGraphics(); cg.clearRect(0, 0, getWidth(), getHeight()); } public void itemStateChanged(ItemEvent e) // Choice sceltaColore { int indice=sceltaColore.getSelectedIndex(); coloreCorrente=cCOLORI[indice]; } class WA extends WindowAdapter // classi locali per gli adattatori { // della finestra e del mouse public void windowClosing(WindowEvent e) { dispose(); } } class MA extends MouseAdapter { public void mousePressed(MouseEvent e) { lastX=e.getX(); lastY=e.getY(); } } class MMA extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { Graphics cg=getGraphics(); cg.setColor(coloreCorrente); int x=e.getX(); int y=e.getY(); cg.drawLine(lastX, lastY, x, y); lastX=x; lastY=y; } } }
Osserva
WindowAdapter, MouseAdapter, MouseMotionAdapter