import java.awt.event.*; import java.awt.*; class CrearRectanguloHandler implements ActionListener { private Dibujo dibujo; private Rectangulo rectangulo; private int estado; private Point firstCorner; private static final int INICIAL=0; private static final int AFTER_CREADO=1; public CrearRectanguloHandler(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) { firstCorner = event.getPoint(); rectangulo = new Rectangulo(firstCorner, 0, 0); dibujo.incorpore(rectangulo); 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(); rectangulo.setThirdCorner(p); dibujo.repaint(); } } } }