title: Java Swing Blank JFrame coming up?
body: <p>I'm new to swing, and was wondering why sometimes my application comes up as blank, and sometimes it displays the components. It seems to be sporadic. There are no exceptions thrown or anything like that. It just frequently comes up as a blank JFrame. At times when I close the application and run it again, it shows the components correctly, but it mainly comes up as blank. Am I doing something wrong in the code? I'm using the Eclipse IDE, if it matters. Here's the code:</p>
  
  <pre><code>import java.applet.Applet;
  import java.awt.BorderLayout;
  import java.awt.FlowLayout;
  import java.awt.GridLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.awt.event.MouseEvent;
  import java.awt.event.MouseListener;
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.util.ArrayList;
  import java.util.Scanner;
  
  import javax.swing.*;
  
  
  public class Main extends JFrame implements ActionListener {
      private static final long serialVersionUID = 1L;
      JRadioButton randomRadioButton;
      JRadioButton uniqueRadioButton;
      JRadioButton participationRadioButton;
      ArrayList&lt;Student&gt; allStudents;
      JFrame mainFrame;
  
      public Main(){
          allStudents = new ArrayList&lt;Student&gt;();
          processAllStudents();
          mainFrame = new JFrame();
          mainFrame.setVisible(true);
          mainFrame.setSize(250, 400);
          mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
          JPanel componentHolder = new JPanel();
          componentHolder.setLayout(new GridLayout(5,1));
  
          JLabel titleText = new JLabel("                     Randomizer");
          componentHolder.add(titleText);
          JButton picker = new JButton("Pick a Student");
          JFileChooser filePick = new JFileChooser();
          filePick.addActionListener(this);
  
          ButtonGroup allRadioButtons = new ButtonGroup();
          randomRadioButton = new JRadioButton("Completely Random");
          uniqueRadioButton = new JRadioButton("Unique");
          participationRadioButton = new JRadioButton("Complete Participation");
  
          allRadioButtons.add(randomRadioButton);
          allRadioButtons.add(uniqueRadioButton);
          allRadioButtons.add(participationRadioButton);
  
          componentHolder.add(randomRadioButton);
          componentHolder.add(uniqueRadioButton);
          componentHolder.add(participationRadioButton);
  
          picker.addActionListener(this);
  
          componentHolder.add(picker);
          componentHolder.add(filePick);
          mainFrame.add(componentHolder);
      }
  
      public void actionPerformed(ActionEvent e){
          if(e.getActionCommand().equals("Pick a Student")){
              if(randomRadioButton.isSelected()){
                  Student result = getStudentRandom();
                  result.increment();
                  String resultString = new String(result.getName() + ", " + result.getFrequency());
                  System.out.println(resultString);
                  JLabel resultLabel = new JLabel(resultString);
                  JOptionPane.showMessageDialog(mainFrame, resultLabel);
              }
              else if(uniqueRadioButton.isSelected()){
                  Student firstStudent = getStudentRandom();
                  Student secondStudent = getStudentRandom();
                  Student result;
                  if(firstStudent.getName().equals(secondStudent.getName())){
                      result = secondStudent;
                  }
                  else{
                      result = firstStudent;
                  }
                  result.increment();
                  String resultString = new String(result.getName() + ", " + result.getFrequency());
                  System.out.println(resultString);
                  JLabel resultLabel = new JLabel(resultString);
                  JOptionPane.showMessageDialog(mainFrame, resultLabel);
              }
              else if(participationRadioButton.isSelected()){
                  Student result = selectStudentParticipant();
                  result.increment();
                  JOptionPane.showMessageDialog(mainFrame, result.getName() + ", " + result.getFrequency());
              }
  
          } else System.out.println("Error.");
  
  
      }
      public void processAllStudents(){
          File f = new File("Test.txt");
          Scanner scanFile = null;
          try {
              scanFile = new Scanner(f);
          } catch (FileNotFoundException e) {
              System.out.println("File Not Found");
          }
          while(scanFile.hasNext()){
              String name = scanFile.next();
              int frequency = scanFile.nextInt();
              Student s = new Student(name, frequency);
              allStudents.add(s);
          }
      }
      public Student getStudentRandom(){
          int result = (int) (Math.random() * allStudents.size());
          return allStudents.get(result);
      }
      public Student selectStudentParticipant(){
          Student temp = null;    //Start of bubble sort algorithm
  
          for(int i = 0; i &lt; allStudents.size() - 1; i++){
              Student firstStudent = allStudents.get(i);
              Student secondStudent = allStudents.get(i+1);
              if(firstStudent.getFrequency() &gt; secondStudent.getFrequency()){
                  temp = firstStudent;
                  firstStudent = secondStudent;
                  secondStudent = temp;
              }
          }
  
          //End of bubble sort algorithm. Data structure now sorted increasing
  
          int firstRandom = (int) (Math.random() * (allStudents.size()/2) + 0.2 * allStudents.size());    //Likely to be bigger
          int secondRandom = (int) (Math.random() * (allStudents.size()/2));
          int randomIndex = 0;    //Used to represent a random index
  
          if(firstRandom &gt; secondRandom){ //More likely. Selects from first half of list
              randomIndex = (int) (Math.random() * allStudents.size()/2);
          }
  
          else if(firstRandom &lt; secondRandom){    //Possible, but less likely
              randomIndex = (int) ((Math.random() * allStudents.size()/2) + allStudents.size()/2);
          }
  
          else{   //If the two random numbers are the same
              randomIndex = (int) (Math.random() * allStudents.size()/2);
          }
  
          return allStudents.get(randomIndex);
  
      }
      public static void main(String[] args){
          new Main();
      }
  
  
  }
  </code></pre>