Smooth move using double buffer : Buffer Paint « 2D Graphics GUI « Java

Smooth move using double buffer

Smooth move using double buffer

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SmoothMove extends JPanel implements MouseMotionListener {

  private int mX, mY;

  private Image mImage;

  public static void main(String[] args) {
    JFrame f = new JFrame();
    f.getContentPane().add(new SmoothMove());
    f.setSize(200, 200);;
  public SmoothMove() {

  public void mouseMoved(MouseEvent me) {
    mX = (int) me.getPoint().getX();
    mY = (int) me.getPoint().getY();

  public void mouseDragged(MouseEvent me) {

  public void update(Graphics g) {

  public void paint(Graphics g) {
    // Clear the offscreen image.
    Dimension d = getSize();
    Graphics offG = mImage.getGraphics();
    offG.fillRect(0, 0, d.width, d.height);
    // Draw into the offscreen image.
    // 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.fillRect(mX - s / 2, mY - s / 2, s, s);


Related examples in the same category

1.Demos of a custom buffered image operationDemos of a custom buffered image operation
2.Buffered draw without flickerBuffered draw without flicker
3.Image offline renderingImage offline rendering
4.Data Buffer Grabber
5.Composite BufferedImage
7.repaint just the affected part of the component
8.Create a multiple buffer strategy with the number of buffers given