A Simple Container
Swing provides for grouping other components together. In AWT, such components extended java.awt.Container and included Panel, Window, Frame, and Dialog. With Swing, you get a whole new set of options, providing greater flexibility and power.
import javax.swing.*; import java.awt.*; public class OpaqueExample extends JFrame { public OpaqueExample() { super("Opaque JPanel Demo"); setSize(400, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); // Create two JPanels (opaque), one containing another opaque JPanel and // the // other containing a nonopaque JPanel. JPanel opaque = createNested(true); JPanel notOpaque = createNested(false); // Throw it all together. getContentPane().setLayout(new FlowLayout()); getContentPane().add(opaque); getContentPane().add(notOpaque); } public static void main(String[] args) { OpaqueExample oe = new OpaqueExample(); oe.setVisible(true); } // Create a JPanel containing another JPanel. The inner JPanel's opacity is // set // according to the parameter. A JButton is placed inside the inner JPanel // to give // it some content. public JPanel createNested(boolean opaque) { JPanel outer = new JPanel(new FlowLayout()); JPanel inner = new JPanel(new FlowLayout()); outer.setBackground(Color.white); inner.setBackground(Color.black); inner.setOpaque(opaque); inner.setBorder(BorderFactory.createLineBorder(Color.gray)); inner.add(new JButton("Button")); outer.add(inner); return outer; } }