2D Graphics GUI Java

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JApplet;
import javax.swing.JFrame;
public class DoubleBufferedImage extends JApplet {
  private Image dbImage;
  private Image originalImage;
  private int xLocation = 0;
  private int imageWidth, imageHeight;
  private Graphics dbImageGraphics;
  private String imageURLString = "file:/peppers.png";
  public void init() {
    URL url = null;
    try {
      url = new URL(imageURLString);
    } catch (MalformedURLException me) {
      showStatus("Malformed URL: " + me.getMessage());
    }
    originalImage = getImage(url);
    MediaTracker mt = new MediaTracker(this);
    mt.addImage(originalImage, 0);
    try {
      mt.waitForID(0);
    } catch (InterruptedException ie) {
    }
    imageWidth = originalImage.getWidth(null);
    imageHeight = originalImage.getHeight(null);
    dbImage = this.createImage(imageWidth, imageHeight);
    dbImageGraphics = dbImage.getGraphics();
  }
  public void update(Graphics g) {
    paint(g);
  }
  public void paint(Graphics g) {
    if (xLocation == imageWidth)
      xLocation = 0;
    dbImageGraphics.clearRect(0, 0, imageWidth, imageHeight);
    dbImageGraphics.drawImage(originalImage, 0, 0, this);
    dbImageGraphics.setColor(Color.red);
    dbImageGraphics.fillOval(xLocation, imageHeight / 2, 20, 20);
    //now dbImage's drawing area appears
    g.drawImage(dbImage, 0, 0, this);
    xLocation++;
    repaint(10);
  }
  public static void main(String[] argv) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    DoubleBufferedImage a = new DoubleBufferedImage();
    frame.getContentPane().add(a);
    frame.setSize(300, 300);
    a.init();
    a.start();
    frame.setVisible(true);
  }
}