A container is any component of a type that has the Container class as a base; so all the Swing components are containers. The Container class is the direct base class for the Window class, and it provides the capability for a window to contain other components. Since the Container class is an abstract class, you cannot create instances of Container. Instead, it's objects of the subclasses such as Window, JFrame, or JDialog that inherit the capability to contain other components.
Note that a container cannot contain an object of the class Window, or an object of any of the classes derived from Window. An object of any other class that is derived from Component can be added to a container.
The components within a container are displayed within the area occupied by the container on the display screen. A dialog box, for example, might contain a JList object offering some options; JCheckbox objects offering other options and JButton objects representing buttons enabling the user to end the dialog or enter the selections—all these components would appear within the boundaries of the dialog box. Of course, for the contained components to be visible, the container must itself be displayed, as the container effectively "owns" its components. The container also controls how its embedded components are laid out by means of an object called a layout manager.
Before I introduce you to what a layout manager is and how the layout of the components in a container ...