Los contenedores Swing pueden clasificarse en dos grandes categorías:
- Contenedores de nivel superior
- Contenedores genéricos

CONTENEDORES DE NIVEL SUPERIOR
Son los que se sitúan en la parte superior de la jerarquía de contenedores de Swing. Existen tres contenedores de nivel superior: JFrame, JWindow y JDialog. Existe también una clase especial, JApplet, que, aunque no es estrictamente un contenedor de nivel superior, merece una mención porque debería utilizarse como elemento de nivel superior de cualquier applet que utilice componentes de Swing.
Las clases JApplet, JFrame, JDialog y JWindow derivan respectivamente de las clases Applet, Frame, Dialog y Window. Es importante tenerlo en cuenta porque el resto de contenedores y componentes de Swing derivan de clases JComponent.
JApplet; Un applet es una aplicación Java que se incrusta en una página Web. Este contenedor sirve para desarrollar Applets. Todos los elementos que forman parte de la interfaz gráfica de un Applet están contenidos dentro de una clase que extiende a la clase JApplet, de ahí que en última instancia herede propiedades y métodos de la clase Container.
JFrame; Un contenedor de este tipo se muestra como una ventana de Windows con bordes, barra de títulos, botones para minimizar, maximizar y cerrar la ventana. También admite barra de menús.

JDialog; Sirve para crear ventanas de diálogo. Este tipo de ventanas se integran en las aplicaciones y Applets y se utilizan para mostrar al usuario mensajes. Los diálogos más conocidos son aquellos que indican al usuario algún tipo de alerta.

JWindow; Un contenedor de este tipo es muy similar a un JFrame pero este no tiene bordes y tampoco soporta barra de menús.

CONTENEDORES GENÉRICOS
Los contenedores genéricos se emplean para encapsular partes de una aplicación o un Applet. Se podrían ver como subcontenedores o un contenedor embebido en otro contenedor de nivel superior.
Los contenedores genéricos heredan de javax.swing.JComponent. Veamos algunos de ellos:
JPanel; Éste es sin duda alguna uno de los componentes más empleados en la creación de interfaces gráficas. Un JPanel describe un área que agrupa a otros componentes y se integra dentro de una aplicación de la misma forma que lo hacen otros controles básicos como por ejemplo un botón (JButton) o una etiqueta (JLabel).
Los componentes JPanel son muy fáciles de manejar y permiten organizar la interfaz no sólo desde un punto de vista visual sino además para agrupar funcionalidades. Cuando se crean interfaces gráficas complejas una de las prácticas más comunes consiste en desarrollar clases específicas que extienden a la clase JPanel para aglutinar partes de la aplicación que comparten un espacio común y una función concreta dentro de la aplicación o el Applet.

JScroIIPane; Prácticamente cualquier elemento dentro de una interfaz gráfica puede tener barras de desplazamiento de forma que el usuario pueda ver aquellas partes que quedan ocultas debido a la limitación de espacio.

JSplitPane; Este tipo de contenedor permite agrupar dos componentes uno al lado del otro, o uno encima del otro. Entre ambos se muestra una barra de forma que cuando el usuario hace clic y desplaza la barra, las áreas de los dos componentes mostrados cambian de tamaño.

JTabbedPane; Este contenedor se emplea para distribuir otros componentes en pestañas.

JTooIBar; La clase JToolBar se emplea para crear la barra de herramientas. Normalmente éstas están formadas por botones, listas y otro tipo de controles básicos, aunque como contenedor un componente JToolBar puede agrupar cualquier tipo de componente.
