// This example is from the book "Java in a Nutshell, Second Edition".
// Written by David Flanagan. Copyright (c) 1997 O'Reilly & Associates.
// You may distribute this source code for non-commercial purposes only.
// You may study, modify, and use this example for any purpose, as long as
// this notice is retained. Note that this example is provided "as is",
// WITHOUT WARRANTY of any kind either expressed or implied.
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Scribble4 extends Applet {
private int lastx, lasty;
/** Tell the system we're interested in mouse events, mouse motion events,
* and keyboard events. This is required or events won't be sent.
*/
public void init() {
this.enableEvents(AWTEvent.MOUSE_EVENT_MASK |
AWTEvent.MOUSE_MOTION_EVENT_MASK |
AWTEvent.KEY_EVENT_MASK);
this.requestFocus(); // Ask for keyboard focus so we get key events
}
/** Invoked when a mouse event of some type occurs */
public void processMouseEvent(MouseEvent e) {
if (e.getID() == MouseEvent.MOUSE_PRESSED) { // check the event type
lastx = e.getX(); lasty = e.getY();
}
else super.processMouseEvent(e); // pass unhandled events to superclass
}
/** Invoked when a mouse motion event occurs */
public void processMouseMotionEvent(MouseEvent e) {
if (e.getID() == MouseEvent.MOUSE_DRAGGED) { // check type
int x = e.getX(), y = e.getY();
Graphics g = this.getGraphics();
g.drawLine(lastx, lasty, x, y);
lastx = x; lasty = y;
}
else super.processMouseMotionEvent(e);
}
/** Called on key events: clear the screen when 'c' is typed */
public void processKeyEvent(KeyEvent e) {
if ((e.getID() == KeyEvent.KEY_TYPED) && (e.getKeyChar() == 'c')) {
Graphics g = this.getGraphics();
g.setColor(this.getBackground());
g.fillRect(0, 0, this.getSize().width, this.getSize().height);
}
else super.processKeyEvent(e); // pass unhandled events to our superclass
}
}
|