title: JPanel is not displaying in my JFrame
body: <p>so I'm playing with JPanels and JFrames and I'm noticing that the JPanel I created is not showing displaying when I add it to a Jframe object. Note, that when I created a JPanel in my Jframe constructor giving the jpanel parameters before being added to the Jframe, it worked. However now I'm using a JPanel object I created and it's not working anymore.
  This is what I have done.</p>
  
  <pre><code>import java.awt.BorderLayout;
  import java.awt.Color;
  import java.awt.Dimension;
  import java.awt.Graphics;
  import java.awt.GridLayout;
  import java.awt.Point;
  import java.awt.event.MouseEvent;
  import java.awt.event.MouseListener;
  import java.awt.event.WindowAdapter;
  import java.awt.event.WindowEvent;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  
  public class MyGui extends JFrame {
  
      MyMouseListener listen = new MyMouseListener();
  
      public MyGui() {
          setSize(500, 500);
          //setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
          getContentPane().setBackground(Color.WHITE);
          addWindowListener(new WindowAdapter() {
              public void windowClosing(WindowEvent e) {
                  System.exit(0);
              }
          });
          Panel panel = new Panel();
          add(panel, BorderLayout.WEST);
          //setVisible(true);
          show();
      }
  
      public static void main(String[] a) {
          MyGui gui = new MyGui();
      }
  }
  
  class Panel extends JPanel {
  
      MyMouseListener listen = new MyMouseListener();
  
      public Panel() {
          setPreferredSize(new Dimension(300, 300));
          addMouseListener(listen);
          setBackground(Color.YELLOW);
          setLayout(new GridLayout(3, 1));
      }
  
      public void paint(Graphics g) {
          super.paintComponents(g);
          g.drawOval((int) Math.round(listen.p.getX()),
                  (int) Math.round(listen.p.getX()), 1, 1);
      }
  }
  
  class MyMouseListener implements MouseListener {
  
      Point p = new Point();
  
      @Override
      public void mouseClicked(MouseEvent e) {
          System.out.println("Mouse was clicked");
      }
  
      @Override
      public void mousePressed(MouseEvent e) {
          p = e.getPoint();
          System.out.println(p);
      }
  
      @Override
      public void mouseReleased(MouseEvent e) {
      }
  
      @Override
      public void mouseEntered(MouseEvent e) {
      }
  
      @Override
      public void mouseExited(MouseEvent e) {
      }
  }
  </code></pre>
  
  <p>EDIT:
  Actually I think I've found the error. The JPanel has it's paint method which when deleted allows the Jframe to show the panel. However I need to be able to draw stuff on the JPanel.</p>