Swing y JFC (Java Foundation Classes)

Esta secci�n proporciona las versiones AWT y Swing de varios programas de ejemplo y habla sobre aspectos interesantes de la conversi�n.

.�Convertir ButtonDemoApplet

El primer ejemplo de conversi�n AWT a Swing es un simple applet que contiene tres botones. Si has le�do las secci�n de los componentes AWT o Swing, el programa te ser� familiar.

Aqu� tenemos dos im�genes. La primera muestra la versi�n AWT del applet ejecut�ndose y la segunda la versi�n Swing.

Versi�n AWT

Versi�n Swing

Habr�s observado que los programas tienen un aspecto diferente.

  1. Los tres botones tienen un borde diferente.
  2. El Applet usa diferentes fuentes para el Texto.
  3. Los botones en el applet Swing tienen iconos y texto.
  4. Los botones en el applet Swing muestran el mnem�nico de teclado.
  5. El applet Swing es m�s grande.

Las primeras dos diferencias existen simplemente por que el AWT y el aspecto y comportamiento Java usado en el programa swing dibujan los botones de forma diferente y tienen diferente fuente por defecto. El aspecto y comportamiento Java es el aspecto y comportamiento que los programas Swing usan a menos que el usuario o el programador especifiquen uno diferente.

Las diferencias 3 y 4 son poeque cuando se convirti� el c�digo nosotros elegimos aprovecharnos de la caracter�stica de los botones Swing no soportadas por los botones AWT: im�genes y mnem�nicos.

La diferencia final es un efecto colateral de las otras cuatro. Si nuestro programa es una pplet, debemos recordad modificar la etiqueta <APPLET> para ajustar cualquier cambio de tama�o en nuestro programa.

Aunque el aspecto de los programas pueda ser diferente, el comportamiento es el mismo. Cuando el usuario pulsa el bot�n izquierdo, se desactiva el bot�n central y el propio bot�n izquierdo, y activa el bot�n derecho. Cuando el usuario pulsa el bot�n derecho, se desactiva a s� mismo y activa los botones central e izquierdo.

La siguiente tabla enlaze el c�digo fuente completo y un fichero HTML que contiene una etiqueta <APPLET> de ejemplo, para cada versi�n del progra,a. Compara el c�digo de la etiqueta <APPLET> para ver las diferencias entre los dos programas

C�digo fuente Etiqueta <APPLET>
AWT ButtonDemoApplet.java ButtonDemoApplet.html
Swing ButtonDemoApplet.java

left.gif

middle.gif

LEFT.gif

ButtonDemoApplet.html
Nota: Observa que si tu navegador no est� configurado para ejecutar programas 1.1 o swing, visitar los ficheros .html listados en la tabla producir� errores. Nosotros proporcionamos los ficheros para que puedas ver las etiquetas de los applet. Puedes usar shift-click para descargar los ficheros

.�Convertir AnimatorApplication

AnimatorApplication es una plantilla para programas de animaci�n. Esta implementaci�n particular "anima" una cadena cambi�ndola peri�dicamente. El programa puede ser f�cilmente modificado para animar im�genes de la misma manera.

Esta secci�n discute dos soluciones diferentes para convertir el programa de animaci�n. La primera soluci�n utiliza una aproximaci�n minimalista -- el c�digo se cambia s�lo lo necesario para que el programa funcione con Swing. La segunda soluci�n es m�s completa -- cambia el c�digo para ajustar las diferencias de la forma en que dibujan los programas AWT y Swing y se aprovecha de las nuevas clases Swing.

La clase AnimatorApplication del AWT desciende de Frame. El m�todo paint de frame usa drawString para dibujar una cadena en el frame. Un thread peri�dicamente se despierta, cambia la cadena al siguiente valor, y redibuja el frame.

Ambas versiones Swing de la clase AnimatorApplication descienden de JFrame.

La versi�n minimalista del programa dibuja de la misma dorma que los hac�a la versi�n del AWT -- llamando al m�todo drawString. Sin embargo, en Swing, el c�digo de dibujo pertenece a un m�todo llamado paintComponent. Adem�s, como JFrame tiene un panel de contenido, el dibujo echo en su m�todo paintComponent no tiene efecto ( el panel de contenido se dibujar� sobre el). Por eso el c�digo de dibujo tiene que moverse fuera de JFrame. En su lugar, el programa define una subclase de JPanel, AnimappPanel, para hacer el dibujado, y sa un ejemplar de AnimappPanel como el panel de contenido del JFrame.

La segunda soluci�n es m�s completa. En lugar de crear una subclase de JPanel para dibujar la cadena, esta soluci�n usa un JLabel, que est� especialmente dise�ado para dibujar cadenas. Adem�s, la segunda soluci�n usa la clase Timer de Swing en lugar de usar un Thread que duerme peri�dicamente.

Aqu� est�n las tres versiones diferentes para compararlas.

C�digo fuente
AWT AnimatorApplication.java
Versi�n Swing Minimalista AnimatorApplication.java
Versi�n completa de Swing AnimatorApplicationTimer.java

COMPARTE ESTE ARTÍCULO

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