Swing y JFC (Java Foundation Classes)

JFC es la abreviatura de Java Foundation Classes, que comprende un grupo de caractersticas para ayudar a construir interfaces grficos 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 seleccin de aspectos y comportamientos. Por ejemplo, el mismo programa puede usar el Aspecto y Comportamiento Java o el Aspecto y Comportamiento Windows. Esperamos mucho ms de los paquetes de Aspecto y Comportamiento -- incluyendo algo que use sonido en lugar de un 'look' visual.
API de Accesibilidad
Permite tecnologas asistivas como lectores de pantalla y display Braille para obtener informacin desde el interface de usuario.
Java 2D API (slo JDK 1.2 )
Permite a los desarrolladores incorporar fcilmente graficos 2D de alta calidad, texto, e imgenes en aplicaciones y applets Java.
Soporte de Drag and Drop (slo JDK 1.2)
Proporciona la habilidad de arrastrar y soltar entre aplicaciones Java y aplicaciones nativas.

Las tres primeras caractersitcas del JFC fueron implementadas sin ningn cdigo nativo, tratando slo con el API definido en el JDK 1.1. Cmo resultado, se convirtieron en una extensin del JDK 1.1. Esta versin fue liberada como JFC 1.1, que algunas veces es llamada 'Versin 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 seccin se concentra en los componentes Swing. Te ayudaremos a elegir los apropiados para tu GUI, te diremos cmo usarlos, y te daremos la informacin 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 caractersitcas del JFC que slo aparecen en el JDK 1.2. Para informacin sobre ellas, puedes ver la seccin sobre Graficos 2D y la Home Page del JFC.

Los siguientes grficos 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 leccin:

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

.Qu Versiones Contienen el API Swing?

El API Swing se presenta en dos versiones.

  • JDK1.2
  • JFC1.1 (para usar con JDK1.1)

La versin que deberas usar depende de si necesitas usar JDK 1.1 o JDK 1.2. Es ms sencillo usar JDK 1.2, ya que no necesitas aadir libreras para poder usar el API Swing; el JFC construido dentro del JDK 1.2. Sin embargo, si necesitas usar el JDK 1.1, aadir el API Swing (usando JFC 1.1) no es dficil. Las instrucciones para hacer ambas cosas estn en las pginas siguientes.

Esta seccin describe el API Swing 1.1, que es la versin presente en JDK 1.2 y en la versin llamada 'JFC 1.1 (con Swing 1.1).' El cdigo de esta seccin, funciona, sin ninguna modificacin, en ambas versiones.

Sun ha liberado muchas versiones del JFC 1.1, que estn identificadas por la versin del API Swing que contienen. Por ejemplo, una versin anterior del JFC 1.1, fue llamada "JFC1.1 (con Swing1.0.3)." La siguiente tabla muestra algunas de las versiones importantes que contienen el API Swing. La fuente en negrita indica las versiones tpicamente usadas en productos comerciales.

Versin del API Swingg Versin del JFC 1.1

Correspondiente

Versin del JDK 1.2

Correspondiente

Comentarios
Swing0.2 JFC1.1

(con Swing0.2)

ninguna La primera verin pbica del JFC1.1.
Swing1.0.3 JFC1.1

(con Swing1.0.3)

ninguna La versin del JFC 1.1 incluida en Java Plug-in1.1.1. Soportada para el uso en productos comerciales.
Swing1.1 Beta JFC1.1

(con Swing1.1 Beta)

JDK1.2 Beta4 La primera versin del JDK 1.2 que usa los mismos nombres de paquetes Swing que la correspondiente versin del JFC 1.1.
Swing1.1 Beta3 JFC1.1

(con Swing1.1 Beta3)

JDK1.2 RC1 La primera versin con los nombres finales de los paquetes Swing.
Swing1.1

Nota: Este es el API cubierto por este tutorial.

JFC1.1

(con Swing1.1)

JDK1.2 FCS La primera versin 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 JDK1.1 + Swing1.1 y JDK1.2, respectivamente.

.Qu Paquetes Swing Debera Utilizar?

El API Swing es poderoso, flexible -- e inmenso. Por ejemplo, la versin JFC 1.1 tiene 15 paquetes pblicos: 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 mayora de los programas slo usan un subconjunto de este API. Esta seccin ordena el API para t, ofreciendo el cdigo ms comn y guindote por los mtodos y clases que podras necesitar. La mayora del cdigo de esta seccin usa slo 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 secccin. Puedes obtener una introduccin ms general a los componentes Swing en Una ruta rpida por el cdigo de una aplicacin Swing.

Los componentes AWT son aquellos proporcionados por las plataformas JDK 1.0 y 1.1. Aunque JDK 1.2 todava 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 buttn de Swing se llama JButton. Los componentes AWT estn en el paquete java.awt, mientras que los componentes Swing estn en el paquete javax.swing.

La mayor diferencia entre los componentes AWT y los componentes Swing es que stos ltimos estn implementados sin nada de cdigo nativo. Esto significa que los componentes Swing pueden tener ms funcionalidad que los componentes AWT, porque no estn restringidos al denominador comn -- las caractersticas presentes en cada plataforma. El no tener cdigo nativo tambin permite que los componentes Swing sean vendidos como aadidos al JDK 1.1, en lugar de slo formar parte del JDK 1.2.

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

  • Los botones y las etiquetas Swing pueden mostrar imgenes en lugar de o adems del texto.
  • Se pueden aadir o modificar fcilmente los bordes dibujados alrededor de casi cualquier componente Swing. Por ejemplo, es fcil poner una caja alrededor de un contenedor o una etiqueta.
  • Se puede modificar fcilmente el comportamiento o la apariencia de un componente Swing llamando a mtodos o creando una subclase.
  • Los componentes Swing no tienen porque ser rectangulares. Por ejemplo, los botones pueden ser redondos.
  • Las tecnologas asistivas como los lectores de pantallas pueden fcilmente obtener informacin desde los componentes Swing. Por ejemplo, una herramienta puede fcilmente obtener el texto mostrado en un botn o en una etiqueta.

Otra caractersitca 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 caracterstica 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 automticamente, por eso no tenemos que tratar con ellos, a menos que queramos tomar ventaja de la potencia que pueden ofrecernos.

Si ests acostumbrado a usar componentes AWT, necesitars tener cuidado con algunas reglas cuando uses componentes Swing.

  • Como regla, los programas no deberan 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 restriccin 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 ms informacin puedes ver Mezclar Componentes de peso ligero y pesado, un artculo de 'The Swing Connection'.
  • Los componentes Swing no son de thread seguro. Si modificas un componente Swing visible -- llamando a su mtodo setText, por ejemplo -- desde cualquier lugar que no sea el manejador de eventos, necesitas seguir unos pasos especiales para hacer que la modificacin se ejecute en el thread de despacho de eventos. Esto no es ningn problema para la mayora de los programas Swing, ya que el cdigo 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 raz del rbol. Por ejemplo, una ventana principal debera ser implementada como un ejemplar de JFrame en vez de como un ejemplar de Frame.
  • No se aaden directamente los componentes a un contenedor de alto nivel como un JFrame. En su lugar, se aaden los componentes a un contenedor (llamado panel de contenido) que a su vez est contenido por el JFrame.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.