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 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