Swing y JFC (Java Foundation Classes)

JFC es la abreviatura de Java Foundation Classes, que comprende un grupo de caracter�sticas para ayudar a construir interfaces gr�ficos de usuario (GUIs).

Los componentes Swing
Incluye todo desde botones hasta splitpanes o tablas.
Soporte de Aspecto y Comportamiento Conectable
Le ofrece a cualquier componente Swing una amplia selecci�n de aspectos y comportamientos. Por ejemplo, el mismo programa puede usar el Aspecto y Comportamiento Java o el Aspecto y Comportamiento Windows. Esperamos mucho m�s de los paquetes de Aspecto y Comportamiento -- incluyendo algo que use sonido en lugar de un 'look' visual.
API de Accesibilidad
Permite tecnolog�as asistivas como lectores de pantalla y display Braille para obtener informaci�n desde el interface de usuario.
Java 2D API (s�lo JDK 1.2 )
Permite a los desarrolladores incorporar f�cilmente graficos 2D de alta calidad, texto, e im�genes en aplicaciones y applets Java.
Soporte de Drag and Drop (s�lo JDK 1.2)
Proporciona la habilidad de arrastrar y soltar entre aplicaciones Java y aplicaciones nativas.

Las tres primeras caracter�sitcas del JFC fueron implementadas sin ning�n c�digo nativo, tratando s�lo con el API definido en el JDK 1.1. C�mo resultado, se convirtieron en una extensi�n del JDK 1.1. Esta versi�n fue liberada como JFC 1.1, que algunas veces es llamada 'Versi�n Swing'. El API del JFC 1.1 es conocido como el API Swing.

Nota: "Swing" era el nombre clave del proyecto que desarroll� los nuevos componentes. Aunque no es un nombre oficial, frecuentemente se usa para referirse a los nuevos componentes y al API relacionado. Est� inmortalizado en los nombres de paquete del API Swing, que empiezan con "javax.swing."

Esta secci�n se concentra en los componentes Swing. Te ayudaremos a elegir los apropiados para tu GUI, te diremos c�mo usarlos, y te daremos la informaci�n que necesites para usarlos de forma efectiva. Explicaremos el Aspecto y Comportamiento Conectable y el soporte de Accesibilidad cuando afecten a la forma de escribir programas Swing. No cubre aquellas caracter�sitcas del JFC que s�lo aparecen en el JDK 1.2. Para informaci�n sobre ellas, puedes ver la secci�n sobre Graficos 2D y la Home Page del JFC.

Los siguientes gr�ficos muestran tres vistas de un GUI que usa componentes Swing. Cada imagen muestra el mismo programa pero con un Aspecto y Comportamiento diferente. El programa, llamado Converter, se explica en detalle al final de la siguiente lecci�n:

Java Look & Feel CDE/Motif Look & Feel Windows Look & Feel

.��Qu� Versiones Contienen el API Swing?

El API Swing se presenta en dos versiones.

  • JDK�1.2
  • JFC�1.1 (para usar con JDK�1.1)

La versi�n que deber�as usar depende de si necesitas usar JDK 1.1 o JDK 1.2. Es m�s sencillo usar JDK 1.2, ya que no necesitas a�adir librer�as para poder usar el API Swing; el JFC construido dentro del JDK 1.2. Sin embargo, si necesitas usar el JDK 1.1, a�adir el API Swing (usando JFC 1.1) no es d�ficil. Las instrucciones para hacer ambas cosas est�n en las p�ginas siguientes.

Esta secci�n describe el API Swing 1.1, que es la versi�n presente en JDK 1.2 y en la versi�n llamada 'JFC 1.1 (con Swing 1.1).' El c�digo de esta secci�n, funciona, sin ninguna modificaci�n, en ambas versiones.

Sun ha liberado muchas versiones del JFC 1.1, que est�n identificadas por la versi�n del API Swing que contienen. Por ejemplo, una versi�n anterior del JFC 1.1, fue llamada "JFC�1.1 (con Swing�1.0.3)." La siguiente tabla muestra algunas de las versiones importantes que contienen el API Swing. La fuente en negrita indica las versiones t�picamente usadas en productos comerciales.

Versi�n del API Swingg Versi�n del JFC 1.1

Correspondiente

Versi�n del JDK 1.2

Correspondiente

Comentarios
Swing�0.2 JFC�1.1

(con Swing�0.2)

ninguna La primera veri�n p�bica del JFC�1.1.
Swing�1.0.3 JFC�1.1

(con Swing�1.0.3)

ninguna La versi�n del JFC 1.1 incluida en Java Plug-in�1.1.1. Soportada para el uso en productos comerciales.
Swing�1.1 Beta JFC�1.1

(con Swing�1.1 Beta)

JDK�1.2 Beta�4 La primera versi�n del JDK 1.2 que usa los mismos nombres de paquetes Swing que la correspondiente versi�n del JFC 1.1.
Swing�1.1 Beta�3 JFC�1.1

(con Swing�1.1 Beta�3)

JDK�1.2 RC1 La primera versi�n con los nombres finales de los paquetes Swing.
Swing�1.1

Nota: Este es el API cubierto por este tutorial.

JFC�1.1

(con Swing�1.1)

JDK�1.2 FCS La primera versi�n que contiene el API final de Swing 1.1 que est� soportada para el uso en productos comerciales. Java Plug-in 1.1.2 y Java Plug-in 1.2 proporciona soporte para applets para JDK�1.1 + Swing�1.1 y JDK�1.2, respectivamente.

.��Qu� Paquetes Swing Deber�a Utilizar?

El API Swing es poderoso, flexible -- e inmenso. Por ejemplo, la versi�n JFC 1.1 tiene 15 paquetes p�blicos: javax.accessibility, javax.swing, javax.swing.border, javax.swing.colorchooser, javax.swing.event, javax.swing.filechooser, javax.swing.plaf, javax.swing.plaf.basic, javax.swing.plaf.metal, javax.swing.plaf.multi, javax.swing.table, javax.swing.text, javax.swing.text.html, javax.swing.tree, y javax.swing.undo.

Afortunadamente, la mayor�a de los programas s�lo usan un subconjunto de este API. Esta secci�n ordena el API para t�, ofreciendo el c�digo m�s com�n y gui�ndote por los m�todos y clases que podr�as necesitar. La mayor�a del c�digo de esta secci�n usa s�lo uno o dos paquetes swing.

  • javax.swing
  • javax.swing.event (no siempre es necesario)

.��Que tienen de diferente los componentes Swing de los componentes AWT?

Si no te importan los componentes AWT, puedes saltarte esta seccci�n. Puedes obtener una introducci�n m�s general a los componentes Swing en Una ruta r�pida por el c�digo de una aplicaci�n Swing.

Los componentes AWT son aquellos proporcionados por las plataformas JDK 1.0 y 1.1. Aunque JDK 1.2 todav�a soporta componentes AWT, recomendamos encarecidamente el uso de componente Swing en su lugar. Puedes indentificar los componentes Swing porque sus nombres empiezan con J. Por ejemplo, la clase button del AWT se llama Button, y la clase butt�n de Swing se llama JButton. Los componentes AWT est�n en el paquete java.awt, mientras que los componentes Swing est�n en el paquete javax.swing.

La mayor diferencia entre los componentes AWT y los componentes Swing es que �stos �ltimos est�n implementados sin nada de c�digo nativo. Esto significa que los componentes Swing pueden tener m�s funcionalidad que los componentes AWT, porque no est�n restringidos al denominador com�n -- las caracter�sticas presentes en cada plataforma. El no tener c�digo nativo tambi�n permite que los componentes Swing sean vendidos como a�adidos al JDK 1.1, en lugar de s�lo formar parte del JDK 1.2.

Incluso el m�s sencillo de los componentes Swing tiene capacidades que van m�s all� de lo que ofrecen los componentes AWT. Por ejemplo.

  • Los botones y las etiquetas Swing pueden mostrar im�genes en lugar de o adem�s del texto.
  • Se pueden a�adir o modificar f�cilmente los bordes dibujados alrededor de casi cualquier componente Swing. Por ejemplo, es f�cil poner una caja alrededor de un contenedor o una etiqueta.
  • Se puede modificar f�cilmente el comportamiento o la apariencia de un componente Swing llamando a m�todos o creando una subclase.
  • Los componentes Swing no tienen porque ser rectangulares. Por ejemplo, los botones pueden ser redondos.
  • Las tecnolog�as asistivas como los lectores de pantallas pueden f�cilmente obtener informaci�n desde los componentes Swing. Por ejemplo, una herramienta puede f�cilmente obtener el texto mostrado en un bot�n o en una etiqueta.

Otra caracter�sitca Swing es que se puede especificar el Aspecto y Comportamiento que utilice el GUI de nuestro programa. Por el contrario, los componentes AWT siempre tienen el aspecto y comportamiento de la plataforma nativa.

Otra caracter�stica interesante es que los componentes Swing con estado usan modelos para mantener el estado. Por ejemplo, un JSlider usa un objeto BoundedRangeModel para contener su valor actual y un rango de valores legales. Los modelos se configuran autom�ticamente, por eso no tenemos que tratar con ellos, a menos que queramos tomar ventaja de la potencia que pueden ofrecernos.

Si est�s acostumbrado a usar componentes AWT, necesitar�s tener cuidado con algunas reglas cuando uses componentes Swing.

  • Como regla, los programas no deber�an usar componentne de 'peso pesado' junto con componentes Swing. Los componentes de peso pesado incluyen todos los componentes AWT listos para usar (como Menu y ScrollPane) y todos los componentes que desciendan de las clases Canvas y Panel del AWT. Esta restricci�n existe porque cuando un componente Swing (u otro componente de 'peso ligero') se solapa con componentes de peso pesado, �ste �ltimo siempre se dibuja encima. Para m�s informaci�n puedes ver Mezclar Componentes de peso ligero y pesado, un art�culo de 'The Swing Connection'.
  • Los componentes Swing no son de thread seguro. Si modificas un componente Swing visible -- llamando a su m�todo setText, por ejemplo -- desde cualquier lugar que no sea el manejador de eventos, necesitas seguir unos pasos especiales para hacer que la modificaci�n se ejecute en el thread de despacho de eventos. Esto no es ning�n problema para la mayor�a de los programas Swing, ya que el c�digo que modifica los componentes normalmente se encuentra en los manejadores de eventos.
  • La herencia de contenidos de cualquier ventana o applet que contenga componentes swing debe tener un contenedor de alto nivel Swing como ra�z del �rbol. Por ejemplo, una ventana principal deber�a ser implementada como un ejemplar de JFrame en vez de como un ejemplar de Frame.
  • No se a�aden directamente los componentes a un contenedor de alto nivel como un JFrame. En su lugar, se a�aden los componentes a un contenedor (llamado panel de contenido) que a su vez est� contenido por el JFrame.

COMPARTE ESTE ARTÍCULO

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