DragObjects
Retired DISLab
import acm.program.*; import acm.graphics.*; import java.awt.*; import java.awt.event.*; public class DragObjects extends GraphicsProgram { public void init() { GRect rect = new GRect(100, 100, 150, 100); rect.setFilled(true); rect.setColor(Color.RED); add(rect); GOval oval = new GOval(300, 150, 100, 70); oval.setFilled(true); oval.setColor(Color.GREEN); add(oval); GStar star = new GStar(150, 250, 100); star.setFilled(true); star.setColor(Color.BLUE); add(star); addMouseListeners(); } @Override public void mousePressed(MouseEvent e) { last = new GPoint(e.getPoint()); gobj = getElementAt(last); } @Override public void mouseDragged(MouseEvent e) { if (gobj != null) { gobj.move(e.getX() - last.getX(), e.getY() - last.getY()); last = new GPoint(e.getPoint()); } } @Override public void mouseClicked(MouseEvent e) { if (gobj != null) { switch (e.getButton()) { case MouseEvent.BUTTON1 : gobj.sendToFront(); break; case MouseEvent.BUTTON2 : gobj.sendBackward(); break; case MouseEvent.BUTTON3 : gobj.sendForward(); break; } } } private GObject gobj; private GPoint last; private static final long serialVersionUID = 1; }