Swing (biblioteca gráfica)

Revisión del 18:17 13 abr 2011 de Antonio jc.vcl (discusión | contribuciones) (Página creada con '{{Ficha Software |nombre= Swing |familia= Java |imagen= |tamaño= |descripción= |imagen2= |tamaño2= |descripción2= |creador= |desarrollador= Sun Microsystems |diseñador= |...')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Swing
Información sobre la plantilla
Parte de la familia Java
DesarrolladorSun Microsystems
Sistemas Operativos compatiblesWindows, Linux
LicenciaGNU GPL

Swing. biblioteca gráfica para Java. Incluye widgets para interfaz gráfica de usuario tales como cajas de texto, botones, desplegables y tablas.

Historia

Las Internet Foundation Classes (IFC) eran una biblioteca gráfica para el lenguaje de programación Java desarrollada originalmente por Netscape y que se publicó en 1996.

Desde sus inicios el entorno Java ya contaba con una biblioteca de componentes gráficos conocida como AWT. Esta biblioteca estaba concebida como una API estandarizada que permitía utilizar los componentes nativos de cada sistema operativo. Entonces una aplicación Java corriendo en Microsoft Windows usaría el botón estándar de Windows y una aplicación corriendo en UNIX usaría el botón estándar de Motif. En la práctica esta tecnología no funcionó:

  • Al depender fuertemente de los componentes nativos del sistema operativo el programador AWT estaba confinado a un mínimo denominador común entre ellos. Es decir que sólo se disponen en AWT de las funcionalidades comunes en todos los sistemas operativos.
  • El comportamiento de los controles varía mucho de sistema a sistema y se vuelve muy difícil construir aplicaciones portables. Fue por esto que el eslogan de Java "Escríbalo una vez, ejecútelo en todos lados" fue parodiado como "Escríbalo una vez, pruébelo en todos lados".

En cambio, los componentes de IFC eran mostrados y controlados directamente por código Java independiente de la plataforma. De dichos componentes se dice con frecuencia que son componentes ligeros, dado que no requieren reservar recursos nativos del sistema de ventanas del sistema operativo. Además al estar enteramente desarrollado en Java aumenta su portabilidad asegurando un comporamiento idéntico en diferentes plataformas.

En 1997, Sun Microsystems y Netscape Communications Corporation anunciaron su intención de combinar IFC con otras tecnologías de las Java Foundation Classes. Además de los componentes ligeros suministrados originalmente por la IFC, Swing introdujo un mecanismo que permitía que el aspecto de cada componente de una aplicación pudiese cambiar sin introducir cambios sustanciales en el código de la aplicación. La introducción de soporte ensamblable para el aspecto permitió a Swing emular la apariencia de los componentes nativos manteniendo las ventajas de la independencia de la plataforma. También contiene un conjunto de herramientas que nos permiten crear una interfaz atractiva para los usuarios.

Arquitectura

Archivo:Gui-widgets.png
Ejemplo de widgets Swing en Java 5 funcionando en X Window System.

Es un framework MVC para desarrollar interfaces gráficas para Java con independencia de la plataforma. Sigue un simple modelo de programación por hilos, y posee las siguientes características principales:

  • Independencia de plataforma.
  • Extensibilidad: es una arquitectura altamente particionada: los usuarios pueden proveer sus propias implementaciones modificadas para sobrescribir las implementaciones por defecto. Se puede extender clases existentes proveyendo alternativas de implementación para elementos esenciales.
  • Personalizable: dado el modelo de representación programático del framework de swing, el control permite representar diferentes estilos de apariencia "look and feel" (desde apariencia MacOS hasta apariencia Windows XP pasando por apariencia GTK+, IBM UNIX o HP UX entre otros). Además, los usuarios pueden proveer su propia implementación de apariencia, que permitirá cambios uniformes en la apariencia existente en las aplicaciones Swing sin efectuar ningún cambio al código de aplicación.

Ejemplo

Simple programa basado en Swing. Muestra una ventama (conteniendo una etiqueta y un botón)

// Import the swing and AWT classes needed
import java.awt.EventQueue;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * Basic Swing example.
 */
public class SwingExample {
    public static void main(String[] args) {

        // Make sure all Swing/AWT instantiations and accesses are done on the
        // Event Dispatch Thread (EDT)
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                // Create a JFrame, which is a Window with "decorations", i.e.
                // title, border and close-button
                JFrame f = new JFrame("Swing Example Window");

                // Set a simple Layout Manager that arranges the contained
                // Components
                f.setLayout(new FlowLayout());

                // Add some Components
                f.add(new JLabel("Hello, world!"));
                f.add(new JButton("Press me!"));

                // "Pack" the window, making it "just big enough".
                f.pack();

                // Set the default close operation for the window, or else the
                // program won't exit when clicking close button
                //  (The default is HIDE_ON_CLOSE, which just makes the window
                //  invisible, and thus doesn't exit the app)
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

                // Set the visibility as true, thereby displaying it
                f.setVisible(true);
            }
        });
    }
}

Ventajas

  • El diseño en Java puro posee menos limitaciones de plataforma.
  • El desarrollo de componentes Swing es más activo.
  • Los componentes de Swing soportan más características.

Enlaces externos