Java making a ball bounce, its left a trail behind?
<p>Im newish to java, and im writing a pong game.
Ive got the ball to move (Thats my first priority) and make it apear on screen.
But for some Reason its leaving a black line behind it, I dont know if im supposed to errase this or something, but heres the code of my 2 classes (The Ball Class is just a class to save the info of the ball)</p>

<pre><code>import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import javax.swing.JFrame;

public class Main extends Canvas implements Runnable{
    private static final long serialVersionUID = 1L;

    public static int Width=650;
    public static int Height=600;
    public boolean Running=false;
    public Thread thread;
    public Ball ball = new Ball();

    public static void main(String[] args){
      Main game = new Main();
      JFrame frame = new JFrame();
      frame.setSize(Width+25, Height+49);
      frame.setTitle("Pong By Poo");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setResizable(false);
      frame.setVisible(true);
      frame.setLocationRelativeTo(null);
      frame.add(game);
      game.start();
    }


    public void start(){
      if(Running==true){
        return;
      } else {
        Running=true;
        thread = new Thread(this);
        thread.start();
      }
    }

    public void run(){
      while(Running==true){
        try{
          Thread.sleep(5);
          Draw();
          Update();
          ball.YVelocity();
          ball.XVelocity();
        } catch(Exception e){}
      }
    }

    public void Draw(){
      BufferStrategy bs = this.getBufferStrategy();
      if(bs==null){
        createBufferStrategy(2);
      } else {
        Graphics g = bs.getDrawGraphics();
        g.setColor(Color.BLACK);
        g.fillOval(ball.BallLocationX, ball.BallLocationY, 20, 20);
        g.dispose();
        bs.show();
      }
    }

    public void Update(){
      if(ball.BallLocationX==0) {
        ball.BallMovementX=true;
        System.out.println("Ball has hit the Left");
      }
      if(ball.BallLocationX==Width) {
        ball.BallMovementX=false;
        System.out.println("Ball has hit the Right");
      }
      if(ball.BallLocationY==0){
        ball.BallMovementY=true;
        System.out.println("Ball has hit the Top");
      }
      if(ball.BallLocationY==Height){
        ball.BallMovementY=false;
        System.out.println("Ball has hit the bottom");
      }
    }
  }



import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class Ball extends JPanel{
  public int BallLocationX;
  public int BallLocationY;
  public boolean BallMovementY; //true makes the ball go up, false makes it go down
  public boolean BallMovementX; //True makes the ball go right, false makes it go left.

  public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.setColor(Color.BLACK);
    g.fillOval(BallLocationX, BallLocationY, 10, 10);
  }

  //moves the ball left to right
  public int YVelocity(){
    if(BallMovementY==true){
      BallLocationY++;
    } else {
      BallLocationY--;
    }

    return BallLocationY;
  }

  //Moves the ball up and down
  public int XVelocity(){
    if(BallMovementX==true){
      BallLocationX+=2;
    } else {
      BallLocationX-=2;
    }

    return BallLocationX;
    }
}
</code></pre>

<p>Please help!</p>
