# Java: Content Panes

## Description

Before Java 2 each top-level container had only one layer. Java 2 top-level containers (JFrame, JApplet, ...) have several layers (panes): root, content, layered, and glass. Programs normally reference only the content pane. There are two programming idioms for using the content pane: (1) using the preassigned pane (recommended), or (2) building your own pane.

## Naming convention

It is common to name the content pane `content` or `contentPane`.

## Idiom 1: Using the existing content pane

Each container has a preconstructed content pane of class `Container`. You can get this pane and add the components to it. For example,

    class MyWindow extends JFrame {
        . . .
        MyWindow() {   // constructor
            Container content = this.getContentPane();
            content.add(...);
            content.add(...);
            . . .

All JFrames already have a content pane, so there's no need to create a new one, just get the existing pane.

## Idiom 2: Creating your own content pane

It isn't uncommon to create a panel that has the GUI components on it, then use this panel for the content pane. For example,

    class MyWindow extends JFrame {
        . . .
        MyWindow() {   // constructor
            JPanel content = new JPanel();
            content.add(...);
            content.add(...);
            . . .
            setContentPane(content);