Q:

JFrame not showing components when new object is created

Having issues in my program, the first run through of the code runs perfectly, but when trying to create a new object and then recalling the original methods that made the window show, the window is showing in the correct size, with the correct title, but not showing any of the components. 
I have checked there is no static variables, and all required variables are initialized in the constructor.  
Class that displays the window:
public class DifficultySelect implements ActionListener        
{
    private JPanel getInput;
    private JFrame startFrame;
    private JButton easy;
    private JButton medium;
    private JButton hard;
    private JButton custom;
    private JLabel labelRow;
    private JLabel labelColumn;
    private JLabel labelMines;
    private JTextArea textRow;
    private JTextArea textColumn;
    private JTextArea textMines;  
    public ArrayList<Integer> getArray;

    public DifficultySelect()
    {
       getInput = new JPanel(); 
       startFrame = new JFrame("Select Difficulty:");
       easy = new JButton();
       medium = new JButton();
       hard = new JButton();
       custom = new JButton();
       labelRow = new JLabel();
       labelColumn = new JLabel();
       labelMines = new JLabel();
       textRow = new JTextArea(5, 20);
       textColumn = new JTextArea(5, 20);
       textMines = new JTextArea(5, 20);
       getArray = new ArrayList<Integer>();
    }

    public void setDisplay()
    {
        getInput.setLayout(new BoxLayout(getInput, BoxLayout. PAGE_AXIS));       
        getInput.setVisible(true);

        Dimension buttonSize = new Dimension(300,40);
        easy.setText("Easy: 5x5 - 4 Mines");
        easy.setMaximumSize(buttonSize);
        easy.addActionListener(this);
        medium.setText("Medium: 10x10 - 20 Mines");
        medium.setMaximumSize(buttonSize);
        medium.addActionListener(this);
        hard.setText("Hard: 15 x 15 - 50 Mines");
        hard.setMaximumSize(buttonSize);
        hard.addActionListener(this);
        custom.setText("Custom: Enter Rows/Columns/Mines then Click");
        custom.setMaximumSize(buttonSize);
        custom.addActionListener(this);

        labelRow.setText("Enter Row Size: ");       
        labelColumn.setText("Enter Column Size: ");       
        labelMines.setText("Enter Amount of Mines:");

        textRow.setAlignmentX(0);
        textColumn.setAlignmentX(0);
        textMines.setAlignmentX(0);

        getInput.add(easy);
        getInput.add(medium);
        getInput.add(hard);
        getInput.add(custom);
        getInput.add(labelRow);
        getInput.add(textRow);
        getInput.add(labelColumn);
        getInput.add(textColumn);
        getInput.add(labelMines);
        getInput.add(textMines);

        startFrame.add(getInput);
        startFrame.setSize(310, 250);
        startFrame.setResizable(false);
        startFrame.setVisible(true);
        startFrame.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
    }

The next block of code shows how I am calling the the GUI class which works when called from main, but does not work when called later on the program
private DifficultySelect d;

    public StartGame()
    {

        d = new DifficultySelect();
        d.setDisplay();
    }

I have been trying many different ways to get this working, I currently have the calling in the constructor, so now I am calling the object with StartGame newGame = new StartGame(); which is just resulting in a blank white screen, although it is the correct size, and has the correct JFrame name, which means some aspects are getting created correctly. 

A:

Please, try it to launch you GUI:
public class StartGame {

    public static void main(String[] args) {
    DifficultySelect    d = new DifficultySelect();
        d.setDisplay();

    }
}

it looks:

When you want again show this form in another place you can use code:
        if (d == null) {
            d = new DifficultySelect();
            d.setVisible(true);
        } else {
            d.setVisible(true);
        }

When you want to create a new instance, put this code in your place:
DifficultySelect new_d = new DifficultySelect();
    new_d.setDisplay();

