Q:

Java - adding components to JFrame

I've seen a couple of ways of doing theism they both seem to work but I'm just wondering if one is better practice over the other.
For example, with a JFrame called myFrame you could do:
myFrame.add(new JButton("OK"));

And you can also do:
Container c = myFrame.getContentPane();
c.add(new JButton("OK"));

Is one of these 'correct'?

A:

A literal copy from the class javadoc of JFrame

The JFrame class is slightly incompatible with Frame. Like all other JFC/Swing top-level containers, a JFrame contains a JRootPane as its only child. The content pane provided by the root pane should, as a rule, contain all the non-menu components displayed by the JFrame. This is different from the AWT Frame case. As a conveniance add and its variants, remove and setLayout have been overridden to forward to the contentPane as necessary. This means you can write:

   frame.add(child);

And the child will be added to the contentPane. The content pane will always be non-null. Attempting to set it to null will cause the JFrame to throw an exception. The default content pane will have a BorderLayout manager set on it. Refer to RootPaneContainer for details on adding, removing and setting the LayoutManager of a JFrame.

So both are equivalent, and both are correct

