Modifique el programa anterior de tal manera que permita dibujar círculos del color seleccionado en el lugar donde se de clic con el mouse.
(Con la interfaz MouseListener, utilizar el método MousePressed con getX y getY)
Modifique el programa resultado del punto anterior de tal manera que permita dibujar (como con un lápiz) trazos continuos del color seleccionado cuando se arrastre el mouse con el botón presionado.
(Con la interfaz MouseMotionListener, utilizar el método MouseDragged)
Código:
import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.Graphics.*; import java.awt.Color.*; public class PintaCirculos extends Applet implements ActionListener,MouseListener{ String msg = " "; int i,j; Button Rojo,Azul,Amarillo; Color micolor; boolean primeraVez = true; String Mensaje = ""; public void init(){ Rojo = new Button ("Color rojo"); Rojo.addActionListener(this); Azul = new Button ("Color azul"); Azul.addActionListener(this); Amarillo = new Button ("Color Amarillo"); Amarillo.addActionListener(this); add (Rojo); add (Azul); add (Amarillo); } public void actionPerformed(ActionEvent evento){ posicion (); if (evento.getSource() == Rojo){ micolor = Color.red; msg = "Ha pulsado rojo";} else if (evento.getSource() == Azul ){ micolor = Color.blue; msg = "Ha pulsado Azul";} else if (evento.getSource() == Amarillo){ micolor = Color.yellow; msg = "Ha pulsado Amarillo";} repaint();} public void mousePressed(MouseEvent a){ escribaMensaje("Mouse presionado (# de clicks:" +a.getClickCount()+")",a);} public void mouseReleased (MouseEvent a){ escribaMensaje("Mouse liberado (# de clicks:" +a.getClickCount()+ ")",a);} public void mouseEntered (MouseEvent a){ escribaMensaje ("Mouse entra a ",a);} public void mouseExited (MouseEvent a){ escribaMensaje("Mouse sale de",a);} public void mouseClicked (MouseEvent a){ escribaMensaje("Mouse presionado (# de clicks:" +a.getClickCount()+")",a);} public void escribaMensaje (String eventDescription, MouseEvent a){ Circulo.Mensaje = eventDescription + " " + a.getComponent().getClass().getName(); Circulo.repaint(); } public void posicion(){ i = (int)(Math.random() * (getSize().width-40)); j = (int)(Math.random() * (getSize().width-40)); } public void update (Graphics g){ paint(g);} public void paint(Graphics g){ if (primeraVez) primeraVez = false; else{ getAppletContext().showStatus(msg); g.setColor(micolor); g.fillOval(i+20,j+30,10,10);} } }