FileDocCategorySizeDatePackage
SmoothMove.javaAPI DocExample1475Mon Apr 05 11:09:06 BST 1999None

SmoothMove.java

import java.awt.*;
import java.awt.event.*;
public class SmoothMove
    extends ApplicationFrame
    implements MouseMotionListener {
  public static void main(String[] args) {
    new SmoothMove();
  }

  private int mX, mY;
  private Image mImage;
  
  public SmoothMove() {
    super("SmoothMove v1.0");
    addMouseMotionListener(this);
    setVisible(true);
  }
  
  public void mouseMoved(MouseEvent me) {
    mX = (int)me.getPoint().getX();
    mY = (int)me.getPoint().getY();
    repaint();
  }
  
  public void mouseDragged(MouseEvent me) { mouseMoved(me); }
  
  public void update(Graphics g) { paint(g); }
  
  public void paint(Graphics g) {
    // Clear the offscreen image.
    Dimension d = getSize();
    checkOffscreenImage();
    Graphics offG = mImage.getGraphics();
    offG.setColor(getBackground());
    offG.fillRect(0, 0, d.width, d.height);
    // Draw into the offscreen image.
    paintOffscreen(mImage.getGraphics());
    // Put the offscreen image on the screen.
    g.drawImage(mImage, 0, 0, null);
  }
  
  private void checkOffscreenImage() {
    Dimension d = getSize();
    if (mImage == null ||
        mImage.getWidth(null) != d.width ||
        mImage.getHeight(null) != d.height) {
      mImage = createImage(d.width, d.height);
    }
  }
  
  public void paintOffscreen(Graphics g) {
    int s = 100;
    g.setColor(Color.blue);
    g.fillRect(mX - s / 2, mY - s / 2, s, s);
  }
}