FileDocCategorySizeDatePackage
ScribblePane1.javaAPI DocExample2381Sat Jan 24 10:44:32 GMT 2004je3.gui

ScribblePane1.java

/*
 * Copyright (c) 2004 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose,
 * including teaching and use in open-source projects.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book, 
 * please visit http://www.davidflanagan.com/javaexamples3.
 */
package je3.gui;
import javax.swing.*;       // For JPanel component
import java.awt.*;          // For Graphics object
import java.awt.event.*;    // For Event and Listener objects

/**
 * A simple JPanel subclass that uses event listeners to allow the user
 * to scribble with the mouse.  Note that scribbles are not saved or redrawn.
 **/
public class ScribblePane1 extends JPanel
    implements MouseListener, MouseMotionListener {
    protected int last_x, last_y;  // Previous mouse coordinates

    public ScribblePane1() {
	// This component registers itself as an event listener for
	// mouse events and mouse motion events.
	this.addMouseListener(this);
	this.addMouseMotionListener(this);

	// Give the component a preferred size
	setPreferredSize(new Dimension(450,200));
    }

    // A method from the MouseListener interface.  Invoked when the
    // user presses a mouse button.
    public void mousePressed(MouseEvent e) {
	last_x = e.getX();  // remember the coordinates of the click
	last_y = e.getY();
    }
    
    // A method from the MouseMotionListener interface.  Invoked when the
    // user drags the mouse with a button pressed.
    public void mouseDragged(MouseEvent e) {
	int x = e.getX();    // Get the current mouse position
	int y = e.getY();
	// Draw a line from the saved coordinates to the current position
	this.getGraphics().drawLine(last_x, last_y, x, y);
	last_x = x;          // Remember the current position
	last_y = y;
    }
    
    // The other, unused methods of the MouseListener interface.
    public void mouseReleased(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    
    // The other, unused, method of the MouseMotionListener interface.
    public void mouseMoved(MouseEvent e) {}
}