Java GUI: about getContentPane( ) method and content

Bersan picture Bersan · May 24, 2013 · Viewed 83.8k times · Source

In this piece of code:

JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

I can see it makes a new label and adds it to the JFrame object frame. But I want to understand what does getContentPane() do, and why do I need it?

I read this API but I still didn't understand.

Answer

MadProgrammer picture MadProgrammer · May 25, 2013

Every Swing top level container (and JInternalFrame) has what's called a JRootPane. This is responsible for actually managing the overall layout of the window.

enter image description here

The root pane has a number of layers, one of which is the content pane. When you add something to a frame (since Java 5 I think), it is automatically added to the content pane for you, before this, you had to call getContentPane().add(...) yourself

Take a look at How to use RootPanes