Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java - adding components to JFrame

Tags:

java

swing

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

like image 959
Tim Avatar asked Dec 22 '25 11:12

Tim


1 Answers

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

like image 114
Robin Avatar answered Dec 24 '25 01:12

Robin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!