miércoles, 7 de marzo de 2012

Java GUI, Swing o AWT

Muchas veces ante la necesidad de crear una interfaz gráfica nos vemos en la necesidad de decidir si utilizar Swing o AWT. Bien, veamos similitudes y diferencias entre uno y otro.

Un repaso a AWT

AWT son las siglas de Abstract Window ToolKit, las herramientas originales de Java para crear interfaces gráficas.
Es una librería GUI portable para aplicaciones autónomas y/o applets, proporciona la conexión entre nuestra aplicación y el GUI nativo.

Las prestaciones de AWT incluyen:

  • Un amplio grupo de componentes de usuario
  • Un modelo de manejo de eventos robusto
  • Herramientas gráficas y de imágenes (clases de Formas, colores y fuentes)
  • Manejadores de diseño que no dependen del tamaño de pantalla o resolución
  • Clases de transferencia de datos, para copiar-pegar a través del portapapeles de la plataforma

Los componentes de AWT dependen de componentes de código nativo, por lo que a los componentes se les suele llamar “heavyweight components” (componentes pesados).
AWT está pensado para aplicaciones que corran en navegadores antiguos y definido con los mínimos de cualquier aplicación, es por esto que no incluye componentes complejos como pueden ser tablas, vistas de árbol, barras de progreso y otros.

Un vistazo a Swing


Swing implementa un juego de componentes construidos sobre AWT y además proporciona un “look and feel” conectable/intercambiable. Está escrito 100% en código Java y basado en el framework Lightweight UI de la JDK 1.1.

Sus características incluyen:

  • Todas las prestaciones de AWT
  • Componentes 100% Java de las versiones de los componentes de AWT
  • Un rico conjunto de componentes de alto nivel (listas en árbol, paneles de pestañas, etc...)
  • Un diseño Java puro, no depende de terceros.
  • Look and feel intercambiable

Al no depender de componentes de la plataforma, a los componentes de Swing se les llama “lightweight components”.
Swing es parte de las JFC (Java Foundation Classes), se creó para solucionar muchas de las limitaciones de AWT. Swing se creó como un bien diseñado, flexible y poderoso juego de herramientas GUI.

Si nos paramos a comparar sus componentes, vemos que son bastante similares. Os dejo una tabla con la correspondencia de algunos componentes AWT con su análogo Swing.

AWTSwing
AppletJApplet
FrameJFrame
WindowJWindow
DialogJDialog
ComponentJComponent
PanelJPanel
ButtonJButton
CanvasPanel
CheckboxJCheckBox o JRadioButton
ChoiceJComboBox
LabelJLabel
ListJList
TextAreaJTextArea
TextFieldJTextField
MenuJMenu
MenuItemJMenuItem

Como conclusión, podríamos decir que si queremos que nuestra aplicación corra en cualquier entorno, independientemente de la antigüedad del mismo, deberíamos usar AWT; ahora bien, si lo que queremos es una herramienta potente, flexible, usar tablas y otros componentes complejos; y completamente adaptable a nuestras necesidades, desde luego nuestra decisión está clara, usaremos la tecnología Swing.

Como punto final vamos a ver como crear un programa sencillo, un panel al que añadimos 2 botones, usando ambas tecnologías para poder ver las diferencias.

Ejemplo con AWT
package AWTvsSwing;

import java.applet.Applet;
import java.awt.Button;
import java.awt.FlowLayout;

public class MainAWT extends Applet {

 @Override
 public void init() {

        Button button1 = new Button();

        button1.setLabel("My Button 1");

        Button button2 = new Button("My Button 2");

        setLayout(new FlowLayout());

        add(button1);
        add(button2);
 }

}


Ejemplo con Swing
package AWTvsSwing;

import java.awt.FlowLayout;

import javax.swing.JApplet;
import javax.swing.JButton;

public class MainSwing extends JApplet {

 @Override
 public void init() {
  JButton button1 = new JButton();

        button1.setText("My Button 1");

        JButton button2 = new JButton("My Button 2");

        setLayout(new FlowLayout());

        add(button1);
        add(button2);
 }

}

0 comentarios:

Publicar un comentario