INTRODUCTION TO COMPUTER SCIENCE
Robert Sedgewick and Kevin Wayne


This is the syntax highlighted version of InteractiveDraw.java.

import java.awt.event.*;

public class InteractiveDraw extends Draw
             implements MouseListener, MouseMotionListener, KeyListener {

    private DrawListener listener;

    public InteractiveDraw(int width, int height) {
        super(width, height);
    }

    // can only have one listener for now
    public void addListener(DrawListener listener) {

        // needed to make sure there is a window for listenting to events
        show();

        this.listener = listener;
        f.addKeyListener(this);
        f.addMouseListener(this);
        f.addMouseMotionListener(this);
        f.setFocusable(true); 
    }

    // user types a key
    public void keyTyped(KeyEvent e) { 
        listener.keyTyped(e.getKeyChar());
    }

    // user presses mouse button #1
    public void mousePressed(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1)
           listener.mousePressed(toUserX(e.getX()), toUserY(e.getY()));
    }

    // user releases mouse button #1
    public void mouseReleased(MouseEvent e) {
        if (e.getButton() == MouseEvent.BUTTON1)
           listener.mouseReleased(toUserX(e.getX()), toUserY(e.getY()));
    }

    // user drags the mouse
    public void mouseDragged(MouseEvent e) {
        // seems to not recognize mouse dragging events if we specify a button???
        // if (e.getButton() == MouseEvent.BUTTON1)
        listener.mouseDragged(toUserX(e.getX()), toUserY(e.getY()));
    }

    // we don't support these methods
    public void keyPressed   (KeyEvent e)   { }
    public void keyReleased  (KeyEvent e)   { }
    public void mouseMoved   (MouseEvent e) { }
    public void mouseEntered (MouseEvent e) { }
    public void mouseExited  (MouseEvent e) { }
    public void mouseClicked (MouseEvent e) { }

}


Last updated: Sat May 22 07:32:41 EDT 2004 .
Copyright © 2004, Robert Sedgewick and Kevin Wayne.