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.
- Los tres botones tienen un borde diferente.
- El Applet usa diferentes fuentes para el Texto.
- Los botones en el applet Swing tienen iconos y texto.
- Los botones en el applet Swing muestran el mnem�nico de teclado.
- 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 | 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 |