I'm trying to make a pong game. I've been searching for the past day or two for a solution to my problem. I've found that I need to extend JPanel in my class and override paintComponent so I can paint on a JPanel, which I have done.

The problem is none of my rectangles are being painted. What am I missing?
Here's what I got:

Java Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Rectangle2D;
import javax.swing.*;

/**
 * @param args
 */

public class Pong extends JPanel implements ActionListener, MouseMotionListener {
	
	Rectangle2D 	leftBumper = new Rectangle2D.Double(0, 225, 20, 100),
					rightBumper = new Rectangle2D.Double(780, 225, 20, 100),
					topBumper = new Rectangle2D.Double(0, 20, 800, 25),
					bottomBumper = new Rectangle2D.Double(0, 475, 800, 25);
	JButton			btnPlay = new JButton("Play"),
					btnLeaderboard = new JButton("Leaderboard");
	JLabel			lblScore = new JLabel("0000");
	JPanel			panel = new JPanel();
	JFrame			frame = new JFrame("Pong");
	Timer clock;
	double bumperY;
	
	public static void main(String[] args) {
		new Pong();
	} //End main

	public Pong() {
		panel.setLayout(null);
		frame.add(panel);
		
		addControls();
		
		//Set everything else
		addMouseMotionListener(this);
		frame.setResizable(false);
		frame.setSize(800,500);
		frame.setVisible(true);
		frame.setBackground(Color.BLACK);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	} //End Pong
	
	public void addControls() {
		//Add the score label and set its location
		lblScore.setLocation(350, 100);
		lblScore.setForeground(Color.white);
		lblScore.setFont(new Font("Serif", Font.BOLD, 30));
		panel.add(lblScore);
		
		//Add the buttons and set its location
		btnPlay.setSize(125, 25);
		btnLeaderboard.setSize(125, 25);
		btnPlay.setLocation(350, 225);
		btnLeaderboard.setLocation(350, 275);
		panel.add(btnPlay);
		panel.add(btnLeaderboard);
	} //End addControls
	
	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		//Changes the position of the left and right bumper based
		//on the value of bumperY
		leftBumper.setRect(0, bumperY, 20, 100);
		rightBumper.setRect(780, bumperY, 20, 100);
		
		//Draws all four of the bumpers
		Graphics2D g2D = (Graphics2D)g;
		g2D.draw(leftBumper);
		g2D.draw(rightBumper);
		g2D.draw(topBumper);
		g2D.draw(bottomBumper);
		
		//Sets the color of the bumpers and fills them
		g2D.setPaint(Color.white);
		g2D.fill(leftBumper);
		g2D.fill(rightBumper);
		g2D.fill(topBumper);
		g2D.fill(bottomBumper);
	} //End paint

	public void actionPerformed(ActionEvent e) {
		
	} //End actionPerformed

	public void mouseDragged(MouseEvent e) {
		mouseMoved(e);
	} //End mouseDragged

	public void mouseMoved(MouseEvent e) {
		//Gets the Y position of the cursor
		bumperY = e.getPoint().getY();
		repaint();
	} //End mouseMoved
} //End class