Swing y JFC (Java Foundation Classes)

Esta p�gina tiene informaci�n general sobre c�mo escribir un programa que contenga componentes Swing. Dos cosas importantes a tener en cuenta son evitar el uso de componentes de peso pesado que no sean Swing y poner nuestros componentes Swing dentro de un contenedor de alto nivel.

El paquete Swing define dos tipos de componentes.

  • Contenedores de alto nivel (JFrame, JApplet, JWindow, JDialog)
  • Componentes de peso ligero (Jcualquier-cosa, como JButton, JPanel, y JMenu)

Los contenedores de alto nivel proporcionan el marco de trabajo en el que existen los componentes de peso ligero. Espec�ficamente, un contenedor de alto nivel Swing proporciona un �rea en el que los componentes de peso ligero Swing pueden dibujarse a s� mismos. Los contenedores de alto nivel Swing tambi�n proporcionan otras caracter�sticas Swing como el espacio para una barra de men�, manejo avanzado de eventos y dibujo, y soporte de accesibilidad.

En general, todo componente Swing deber�a tener un contenedor Swing de alto nivel por encima en el �rbol de contenidos. Por ejemplo, todo applet que contenga componentes Swing deber�a estar implementado como una subclase de JApplet (que es una subclase de Applet). De forma similar, toda ventana principal que contenga componentes Swing deber�a ser implementada con un JFrame.

Aqu� tenemos una imagen del �rbol de contentido de un GUI de un t�pico programa Swing que implementa una ventana que contiene dos botones, un campo de texto y una lista.

Aqu� tenemos otra imagen del mismo GUI excepto en que ahora es un Applet ejecut�ndose en un navegador.

El panel de contenido de las figuras anteriores es el Contenedor normal que hay debajo de cada contenedor Swing. Un contenedor de alto nivel Swing es una subclase Swing de un componente AWT de peso pesado. Los contenedores de alto nivel Swing le a�aden las necesidades Swing -- incluyendo un panel de contenido -- a los componentes pesados del AGM.

Aqu� est� el c�digo que construye el GUI mostrado en las figuras anteriores.

//Configura el JPanel,que contiene el campo de texto y la lista.
JPanel panel = new JPanel();
panel.setLayout(new SomeLayoutManager());
panel.add(textField);
panel.add(list);

//topLevel es un ejemplar de JApplet o JFrame
Container contentPane = topLevel.getContentPane();
contentPane.setLayout(new AnotherLayoutManager());
contentPane.add(button1);
contentPane.add(button2);
contentPane.add(panel);
Nota: No se pueden a�adir directamente los componentes a un componente de alto nivel.
    topLevel.add(something);  //NO SE PUEDE HACER ESTO!!!

En general, deber�amos evitar el uso de componentes pesados en GUIs Swing (excepto los contenedores de alto nivel Swing que contienen el GUI, por supuesto). El problema m�s obsevable cuando se mezclan componentes pesados y ligeros es que cuando se solapan dentro de un contenedor, el componente de peso pesado siempre se dibuja encima del componente de peso ligero. Puedes ver Mezclar Componentes Pesados y Ligeros en la "Swing Connection" para m�s informaci�n sobre la mezca de los dos tipos de componentes.

COMPARTE ESTE ARTÍCULO

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