Swing (biblioteca gráfica)

De EcuRed
Swing
Información sobre la plantilla
Parte de la familia Java

Componentes de Swing
DesarrolladorSun Microsystems
Sitio web
Java en Español
Swing. Biblioteca gráfica para Java. Incluye widgets para interfaz gráfica de usuario tales como cajas de texto, botones, desplegables y tablas.

Contenido

Introducción

El paquete Swing es el nuevo paquete gráfico que ha aparecido en la versión 1.2 de Java. Está compuesto por un amplio conjunto de componentes de interfaces de usuario que funcionen en el mayor número posible de plataformas.

Cada uno de los componentes de este paquete puede presentar diversos aspectos y comportamientos en función de una biblioteca de clases. En la versión 1.0 de Swing, que corresponde a la distribuida en la versión 1.2 de la API de Java se incluyen tres bibliotecas de aspecto y comportamiento para Swing:

La siguiente imagen muestra una aplicación de ejemplo (adjunta al JDK 1.2) que muestra las diferentes interfaces para una misma aplicación según se utilice una u otra biblioteca:

Es la nueva clase denominada UiManager la que se encarga del aspecto y comportamiento de una aplicación Swing en un entorno de ejecución.

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ó:

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

Es un framework Modelo Vista Controlador 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:

Nuevas características

La arquitectura Swing presenta una serie de ventajas respecto a su antecedente AWT:

Nuevos gestores de impresión

Swing incorpora nuevos gestores de impresión, ampliando los cinco que AWT incorporaba. Entre ellos conviene destacar los siguientes:

Principales clases

Las clases de Swing se parecen mucho a las de AWT. Así la clase Panel de AWT tiene una clase JPanel en Swing. Esto se cumple para todas las clases menos para Choice, Canvas, FileDialgog y ScrollPane.

De hecho todas las clases componentes de Swing (clases hijas de JComponent), son hijas de la clase Component de AWT.

Por supuesto Swing no se limita a estas clases, sino que posee muchas más con diversas funcionalidades. Para estudiarlas consulte la documentación del JDK 1.2 de Java.

Patrón de diseño Modelo-Vista-Controlador

Muchos de los componentes Swing están basados en un patrón de diseño denominado "Modelo-Vista-Controlador".

El concepto de este patrón de diseño se basa en tres elementos:

Ejemplo

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

// Importa las clases necesarias de Swing and AWT 
import java.awt.EventQueue;
import java.awt.FlowLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class SwingExample {
    public static void main(String[] args) {
 
        // Asegúrese de que todas las instancias y accesos de Swing/AWT  están hecha en la 
        // Event Dispatch Thread (EDT)
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                // Crea un JFrame, es una Window con  "decoraciones", o sea
                // titulo, borde y  botón
                JFrame f = new JFrame("Swing Example Window");
                f.setLayout(new FlowLayout());
 
                // Adiciona algunos Componentes
                f.add(new JLabel("Hello, world!"));
                f.add(new JButton("Press me!"));
 
                f.pack();
 
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
                f.setVisible(true);
            }
        });
    }
}

Ventajas

Enlaces externos

Fuentes