title: JFrame shows up grey, blank
body: <p>I have a problem where my frame shows up as grey, but then after a few seconds it displays the image as my for loop is finishing. I need to make it so that it displays the image correctly once it opens in order to show the loop. Here is my entire code, sorry about the length:</p>
  
  <pre><code>import java.awt.*;
  import javax.swing.*;
  
  public class MainFrame extends JFrame{
      public void MainFrame() {
          setTitle("Game");
          setSize(1300, 650);
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          setVisible(true);
          setBackground(Color.WHITE);
          Dice diceObject = new Dice();
          add(diceObject);
      }
  }
  import java.awt.*;
  import java.util.Random;
  import javax.swing.*;
  
  
  public class Dice extends JPanel {
  
   public static int pause(int n)
      {
          try {
              Thread.sleep(n);
              } catch(InterruptedException e) {
          }
          return n;
      }
  
  public void Dice() {
      setDoubleBuffered(true);
  }
  
  @Override
  public void paintComponent(Graphics g) {
      super.paintComponent(g);
      int width = getWidth();    
      int height = getHeight(); 
  
      int num = 0;
      for (int i = 0; i &lt; 7; i++) {
          Random generator= new Random();
          int number = generator.nextInt(6)+1;
          g.setColor(Color.WHITE);
          g.fillRect(0, 0, width, height);
          g.setColor(Color.BLACK);
          g.drawRoundRect(550, 150, 200, 200, 50, 50);
          System.out.println("Test");
          if (number == 1) {                  //Roll one
              num = 1;
              g.setColor(new Color (0, 0, 0));
              g.fillOval(640, 240, 20, 20);
              pause(100);
          } if (number == 2) {                //Roll two
              num = 2;
              g.setColor(new Color (0, 0, 0));
              g.fillOval(590, 290, 20, 20);
              g.fillOval(690, 190, 20, 20);
              pause(100);
          } if (number == 3) {                //Roll three
              num = 3;
              g.setColor(new Color (0, 0, 0));
              g.fillOval(590, 290, 20, 20);
              g.fillOval(640, 240, 20, 20);
              g.fillOval(690, 190, 20, 20);
              pause(100);
          } if (number == 4) {                //Roll four
              num = 4;
              g.setColor(new Color (0, 0, 0));
              g.fillOval(590, 290, 20, 20);
              g.fillOval(590, 190, 20, 20);
              g.fillOval(690, 290, 20, 20);
              g.fillOval(690, 190, 20, 20);
              pause(100);
          } if (number == 5) {                //Roll five
              num = 5;
              g.setColor(new Color (0, 0, 0));
              g.fillOval(590, 290, 20, 20);
              g.fillOval(590, 190, 20, 20);
              g.fillOval(640, 240, 20, 20);
              g.fillOval(690, 290, 20, 20);
              g.fillOval(690, 190, 20, 20);
              pause(100);
          } if (number == 6) {                //Roll six
              num = 6;
              g.setColor(new Color (0, 0, 0));
              g.fillOval(590, 190, 20, 20);
              g.fillOval(590, 240, 20, 20);
              g.fillOval(590, 290, 20, 20);
              g.fillOval(690, 190, 20, 20);
              g.fillOval(690, 240, 20, 20);
              g.fillOval(690, 290, 20, 20);
              pause(100);
          }
      }
      g.setFont(new Font("TimesRoman", Font.PLAIN, 20));
      g.drawString("You rolled a " + num, 590, 100);
      pause(1000);
  }
  }
  </code></pre>
  
  <p>Thanks in advance.</p>