import java.awt.event.*; import java.awt.*; class CrearCirculoHandler implements ActionListener { private Dibujo dibujo; private Circulo circulo; private int estado; private Point centro; private static final int INICIAL=0; private static final int AFTER_CREADO=1; public CrearCirculoHandler(Dibujo dib) { dibujo=dib; estado=INICIAL; } public void actionPerformed(ActionEvent e) { dibujo.changeMouseListener(new MouseHandler()); dibujo.changeMouseMotionListener(new MouseMotionHandler()); estado = INICIAL; } class MouseHandler extends MouseAdapter { public void mousePressed(MouseEvent event) { if(estado==INICIAL) { centro = event.getPoint(); circulo = new Circulo(centro, 0); dibujo.incorpore(circulo); estado = AFTER_CREADO; dibujo.repaint(); } } public void mouseReleased(MouseEvent event) { estado = INICIAL; } } class MouseMotionHandler extends MouseMotionAdapter { public void mouseDragged(MouseEvent event) { if (estado == AFTER_CREADO) { Point p = event.getPoint(); double a = p.getX()-centro.getX(); double b = p.getY()-centro.getY(); double newRadio=Math.sqrt(a*a+b*b); circulo.setRadio(newRadio); dibujo.repaint(); } } } }