title: Java applet repaint a moving circle
body: <p>I've just moved over from Pygame so Java 2D in an applet is a little new to me, especially when it comes to repainting the screen. In pygame you can simply do <code>display.fill([1,1,1])</code> but how do I do this in an applet in Java? I understand the use of <code>repaint()</code> but that doesn't clear the screen - any moving object is not 'removed' from the screen so you just get a long line of painted circles.</p>
  
  <p>Here's my code that I've been testing with:</p>
  
  <pre><code>package circles;
  import java.applet.Applet;
  import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.Graphics2D;
  import java.util.Random;
  
  public class circles extends Applet implements Runnable {
      private static final long serialVersionUID = -6945236773451552299L;
      static Random r = new Random();
  
      String msg = "Click to play!";
      static int w = 800, h = 800;
  
      int[] txtPos = { (w/2)-50,(h/2)-50 };
      int[] radiusRange = { 5,25 };
      int[] circles;
      static int[] posRange;
  
      int x = 0, y = 0;
      int radius = 0;
      int cursorRadius = 10;
  
      boolean game = false;
  
      public static int[] pos() {
          int side = r.nextInt(5-1)+1;
          switch(side) {
              case 1:
                  posRange = new int[]{ 1,r.nextInt(w),r.nextInt((h+40)-h)+h,r.nextInt(270-90)+90 };
                  break;
              case 2:
                  posRange = new int[]{ 2,r.nextInt((w+40)-w)+w,r.nextInt(h),r.nextInt(270-90)+90 };
                  break;
              case 3:
                  posRange = new int[]{ 3,r.nextInt(w),r.nextInt(40)-40,r.nextInt(180) };
                  break;
              case 4:
                  posRange = new int[]{ 4,r.nextInt(40)-40,r.nextInt(h),r.nextInt(180) };
                  break;
          }
          System.out.println(side);
          return posRange;
      }
      public void start() {
          setSize(500,500);
          setBackground(Color.BLACK);
          new Thread(this).start();
      }
  
      public void run() {
  
      }
      public void update(Graphics g) {
          paint(g);
      }
  
      public void paint(Graphics e) {
          Graphics2D g = (Graphics2D) e;
  
          if(System.currentTimeMillis()%113==0) {
              x+=1;
              y+=1;
          }
  
          g.setColor(Color.BLUE);
          g.fillOval(x,y,20,20);
  
          repaint();
      }
  }
  </code></pre>