# Java: JPanel - Container

Description. A JPanel is an empty area that can be used either to

1. Layout other components, including other panels (see below).
2. JPanel - Drawing Area).

## Use a JPanel to layout other components

Declare and create the JPanel
  For example,

         JPanel p = new JPanel();

Set the layout and other characteristics
  See Layouts. For example,

         p.setLayout(new BorderLayout());
         p.setPreferredSize(new Dimension(200, 100));
         p.setBackground(Color.blue);

  You may want to set these characteristics in the constructor of a new class that extends JPanel. The default layout for a JPanel is FlowLayout, but it is a good idea to explicitly set it to avoid any problems with future changes in the default (as happened in the change from Java 1.1 to 1.2).
Add components
  Use `add(...)` to add components to a panel. For example,

         p.add(plusButton, BorderLayout.NORTH);
         p.add(minusButton, BorderLayout.SOUTH);

## Constructors

The most constructor for a panel uses no parameters. This creates a panel with the default layout, BorderLayout. Call `setLayout` if you want to change the layout.

    JPanel p = new JPanel();
    p.setLayout(new FlowLayout());

You can optionally specify the layout in the JPanel constructor call.

    JPanel p = new JPanel(new FlowLayout());

However, this doesn't with BoxLayout, so using setLayout is still the preferred style of many programmers.

## Common methods

    p.setLayout(LayoutManager layout);
    p.setPreferredSize(new Dimension(int width, int height));
    p.setBackground(Color c);
    p.add(some component);
    w = p.getWidth();  // Used for graphics, not components
    h = p.getHeight();  // Used for graphics, not components

## Example

    JPanel p = new JPanel();
    p.setLayout(new GridLayout(4, 3));  // 4 rows and three columns
    JButton bx = new JButton("Top left");
    p.add(bx);   // bx goes into first grid element.
    ...          // add more elements to the panel.