Esta secci�n presenta algunos de los componentes m�s utilizados de Swing y explica como los componentes de un GUI entran juntos en un contenedor. Para ilustrarlo, usaremos el programa SwingApplication presentado en Una Ruta R�pida por el C�digo de una Aplicaci�n Swing. Y aqu� est� su aspecto de nuevo.
SwingApplication crea cuatro componentes Swing muy utilizados.
- un frame, o ventana principal (JFrame)
- un panel, algunas veces llamado pane (JPanel)
- un bot�n (JButton)
- una etiqueta (JLabel)
El frame es un contenedor de alto nivel. Existe principalmente para proporcionar espacio para que se dibujen otros componentes Swing. Los otros contenedores de alto nivel m�s utilizados son los di�logos (JDialog) y los applets (JApplet).
El panel es un contenedor intermedio. Su �nico prop�sito es simplificar el posicionamiento del bot�n y la etiqueta. Otros contenedores intermedios, como los paneles desplazables, (JScrollPane) y los paneles con pesta�as (JTabbedPane), t�picamente juegan un papel m�s visible e interactivo en el GUI de un programa.
El bot�n y la etiqueta son componentes at�micos -- componentes que existen no para contener otros componentes Swing, sino como entidades auto-suficientes que representan bits de informai�n para el usuario. Frecuentemente, los componentes at�micos tambi�n obtienen entrada del usuario. El API Swing proporciona muchos componentes at�micos, incluyendo combo boxes (JComboBox), campos de texto (JTextField), y tablas (JTable).
Aqu� podemos ver un di�grama con el �rbol de contenidos de la ventana mostrada por SwingApplication. Este di�grama muestra todos los contenedores creados o usados por el programa, junto con los componentes que contienen. Observa que si a�adimos una ventana -- por ejemplo, un di�logo -- la nueva ventana tendr�a su propio �rbol de contenidos, independiente del mostrado en esta figura.
JFrame (un contenedor de algo nivle) | ... | panel de contenido | JPanel | +----------------+ | | JButton JLabel
Como muestra la figura, incluso el programa Swing m�s sencillo tiene m�ltiples niveles en su �rbol de contenidos. La ra�z del �rbol de contenidos es siempre un contenedor de alto nivel. Este contenedor proporciona espacio para que sus componentes Swing descendentes se dibujen a s� mismo.
Truco: Para ver el �rbol de contenidos de cualquier frame o di�logo, pulsa el borde para seleccionarlo y pulsa Control-Shift-F1. Se escribir� una lista con el �rbol de contenidos en el stream de salida est�ndard. |
Todo contenedor de alto nivel contiene indirectamente un contenedor intermedio conocido como panel de contenido. Para la mayor�a de los programas no necesitas saber qu� pasa entre el contenedor de alto nivel y su panel de contenido. (Si realmente quieres verlo, puedes ver C�mo usar Paneles Ra�z.)
C�mo regla general, el panel de contenido contiene, directamente o indirectamente, todos los componentes visibles en el GUI de la ventana. La gran excepci�n a esta regla es que si el contenedor de alto nivel tiene una barra de men�, entonces �sta se sit�a en un lugar especial fuera del panel de contenido.
Para a�adir componentes a un contenedor, se usa una de las distintas formas del m�todo add. Este m�todo tiene al menos un argumento -- el componente a a�adir. Algunas veces se requiere un argumento adicional para proporcionan informaci�n de distribuci�n. Por ejemplo, la �ltima l�nea del siguiente c�digo de ejemplo especifica que el panel deber�a estar en el centro de su contenedor (el panel de contenido).
frame = new JFrame(...); button = new JButton(...); label = new JLabel(...); pane = new JPanel(); pane.add(button); pane.add(label); frame.getContentPane().add(pane, BorderLayout.CENTER);