Problem written by Chris Piech.
Handouts:
GraphicsReference
EventsReference
Day5: HolePuncher.java
This example lets you treat your computer like a piece of paper and your mouse like a hole puncher. The user should be able to click anywhere on the window and create holes (GOvals).
Make a constant that describes the radius of the holes you will punch. 10 is a good size for this. Remember that GOval
s want to see a double
for this variable (not an int
). Then add a mouse listener and create a draw
method to react with every time the user punches a new hole.
/** * Class: HolePuncher * ----------------- * A program that draws filled black circles on the screen whenever * the mouse * is pressed. */ public class HolePuncher extends GraphicsProgram { /* The radius of each hole that we punch. */ private static final double HOLE_RADIUS = 10; public void run() { addMouseListeners(); } /** * Draws a black circle centered at the mouse location whenever the mouse * is pressed. */ public void mousePressed(MouseEvent e) { double x = e.getX() - HOLE_RADIUS; double y = e.getY() - HOLE_RADIUS; GOval hole = new GOval(x, y, 2 * HOLE_RADIUS, 2 * HOLE_RADIUS); hole.setFilled(true); add(hole); } }