Swing y JFC (Java Foundation Classes)

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);

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR