Be sure to specify which frame you are getting the Content Pane for.
CODE
Container con = Intro.getContentPane();
And secondly put your
Intro.setVisible(true); statement towards the buttom after you have added all your controls.
CODE
public JFrame Intro()
{
Intro.setTitle("IT'S TIC-TAC-TOE!");
Intro.setBounds(250, 250, 300, 150);
Intro.setResizable(false);
Intro.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = new JPanel();
Container con = Intro.getContentPane();
JLabel pic = new JLabel(new ImageIcon("funny.gif"));
JButton start = new JButton("LET'S PLAY!");
start.addActionListener(this);
pane.add(pic, BorderLayout.NORTH);
pane.add(start, BorderLayout.SOUTH);
con.add(pane);
// Put the setVisible down here so that it will show everything you added.
Intro.setVisible(true);
return Intro;
}
By putting the setVisible up at the top, you are showing your frame and then adding content. Your components will not be "realized". So add your content to the GUI first and then trigger the realization by using setVisible on the frame.