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); } }