biblioteca+grafica

biblioteca gráfica Swing es una __[|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 <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|1996]__. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin-bottom: 0pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Desde sus inicios el entorno Java ya contaba con una biblioteca de componentes gráficos conocida como <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|AWT]__. Esta biblioteca estaba concebida como una <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|API]__ estandarizada que permitía utilizar los componentes nativos de cada sistema operativo. Entonces una <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|aplicación]__ Java corriendo en <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|Microsoft Windows]__ usaría el botón estándar de Windows y una aplicación corriendo en <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|UNIX]__ usaría el botón estándar de <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|Motif]__. En la práctica esta tecnología no funcionó: <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin-bottom: 0pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">En cambio, los componentes de IFC eran mostrados y controlados directamente por código Java independiente de la <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|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 <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|portabilidad]__ asegurando un comporamiento idéntico en diferentes plataformas. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin-bottom: 0pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">En <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|1997]__, <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|Sun Microsystems]__ y <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|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 <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|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 <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|interfaz]__ atractiva para los <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|usuarios]__. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin-bottom: 0pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Arquitectura <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin-bottom: 0pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Ejemplo de widgets Swing en Java 5 funcionando en <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|X Window System]__. <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin-bottom: 0pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Es un <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|framework]__ <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|MVC]__ para desarrollar <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|interfaces gráficas]__ para <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|Java]__ con independencia de la plataforma. Sigue un simple modelo de programación por hilos, y posee las siguientes características principales: <span style="background-color: transparent; color: #000000; font-family: Times New Roman; font-size: 16px; line-height: normal; margin: 0cm 0cm 0pt 36pt; text-align: justify; text-decoration: none; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Ventajas
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Al depender fuertemente de los componentes nativos del sistema operativo el programador <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|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.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">El comportamiento de los controles varía mucho de sistema a sistema y se vuelve muy difícil construir aplicaciones <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|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".
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Independencia de plataforma.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">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.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">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 <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|MacOS]__ hasta apariencia <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|Windows XP]__ pasando por apariencia <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|GTK+]__, <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|IBM UNIX]__ o <span style="background-color: transparent; color: #0066cc; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; vertical-align: auto;">__[|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.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">El diseño en Java puro posee menos limitaciones de plataforma.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">El desarrollo de componentes Swing es más activo.
 * <span style="background-color: transparent; background-color: transparent; color: #000000; color: #0f243e; font-family: Times New Roman; font-family: Times New Roman; font-size: 16px; font-size: 16px; line-height: normal; margin-bottom: 0pt; margin-top: 0cm; text-align: left; text-decoration: none; vertical-align: auto; vertical-align: auto;"><span style="background-color: transparent; color: #0f243e; font-family: 'Times New Roman','serif'; font-size: 16px; text-align: justify; text-decoration: none; vertical-align: auto;">Los componentes de Swing soportan más características.