– Listeners: canvas vs applet
– Selecting: isSelected, highlighting
– Deleting shapes
– Changing colors
– Dragging / moving: mousePressed, mouseDragged, mouseReleased.
Optimal: relative position
– Creation: fixed-size fixed-location, fixed-size variable location.
How do you remember which shape to create?
– Simple resizing of selected object. Resize button. mouseDragged must
distinguish between moving and resizing
– Create and drag to resize: Use temporary shape of some sort or add
to vector and automatically go into resizing
– Lines: How to check if point is in line. Moving / redirecting.
Tricky: avoid divide by zero. Make sure it works for horizontal and
vertical lines. Tolerance, fuzziness.
Miniproject: Should shape include the resize
– inheritance mechanism (super, super constructors, rules for default constructors)
– More encapsulation, composition, and design (eval and filled oval, composite shapes, using points for person instead of coordinates), relative position, resizing persons, act, shapes with mouse listeners – pointing person)
Next year: Objects using each other. strategy pattern for operation on all, inner classes
Due first week