Professional Documents
Culture Documents
3.1. Introducción.
Interfaz gráfica de usuario (En inglés Graphic User Interface, también conocido con su
acrónimo GUI) es un método para facilitar la interacción del usuario con el ordenador o la
computadora a través de la utilización de un conjunto de imágenes y objetos pictóricos
(iconos, ventanas..) además de texto. Surge como evolución de la línea de comandos de los
primeros sistemas operativos y es pieza fundamental en un entorno gráfico.
GUI es un acrónimo del vocablo inglés Graphical User Interface. Douglas Engelbart,
además de inventor del ratón de ordenador, desarrolló la primera interfaz gráfica en los
años 1960 en EE.UU. en los laboratorios de XEROX. Fue introducida posteriormente al
público en las computadoras Apple Macintosh en 1984, y a las masas hasta 1993 con la
primera versión popular del sistema operativo Windows 3.0.
Los GUIs que no son PUIs son encontrados en juegos de computadora, y los GUIs
avanzados basados en realidad virtual ahora son usados con más frecuencia en las
investigaciones. Muchos grupos de investigación en Norteamérica y Europa están
trabajando actualmente en el interfaz de enfoque del usuario o ZUI (Zooming User
Interface), que es un adelanto lógico en los GUI, mezclando 3D con 2.o o "2D y medio
objetos vectoriales de una D".
16
En el año 1983 Apple ya se había convertido en una empresa de 1000 millones de
dólares, el mismo valor que IBM.
En 1987 IBM se vio obligada a entrar en el mercado de los ordenadores personales con
entorno gráfico con su modelo PS/2, aliándose con Bill Gates (Microsoft), que había
desarrollado el OS/2. La interfaz gráfica de este sistema operativo era muy similar a la de
Apple.
Pero el OS/2 no se convirtió en el nuevo estándar del sector, debido fundamentalmente
al conflicto de intereses entre IBM y Microsoft.
Microsoft crea el Windows 1.0, sistema operativo gráfico para ordenadores PC IBM
compatibles, con un parecido asombroso al Mac OS.
La respuesta de Apple a la introducción del sistema operativo Windows fue la
interposición de una demanda de varios miles de millones de dólares contra Microsoft, por
violación de copyright.
La aparición de ordenadores IBM clónicos hizo que el sistema Windows se
popularizara, lo que restó mercado a Apple. Ésta se recuperó a finales de 1990 lanzando
nuevos productos.
Una señal inequívoca del éxito de Apple fue la aparición de productos similares: una
pequeña compañía llamada Nutek Computers Inc. anunció que estaba desarrollando un
ordenador compatible con el Macintosh.
En 1991, John Sculley, director de Apple, reveló que la compañía estaba considerando
competir contra Microsoft en el campo del software vendiendo su sistema operativo a
terceros.
Apple reveló que estaba manteniendo conversaciones con su antiguo rival, IBM,
destinadas a compartir tecnologías. Decidieron crear una joint venture para desarrollar un
sistema operativo avanzado que ambas utilizarían en sus nuevas máquinas y licenciarían a
terceros. Este plan presentaba un desafío directo a Microsoft.
Microsoft consigue convertir a Windows en el sistema operativo más utilizado en el
mundo. Dejando a Apple en un segundo lugar.
Algúnos GUIs son diseñados para cumplir con los rigurosos requisitos de mercados
verticales. Éstos se conocen como "GUIs específico de uso." Un ejemplo de un GUI tan
específico de uso es el ahora familiar touchscreen (pantalla que al ser tocada efectúa los
comandos del ratón del software de venta encontrado en muchos restaurantes alrededor del
mundo y en comprobaciones en tiendas del autoservicio. Primero iniciado por Gene
17
Mosher en la computadora del ST de Atari en 1986, el uso que el GUI específico del
touchscreen ha encabezado una revolución mundial en el uso de computadoras a través de
la industria del alimento y de las bebidas y en venta al por menor general.
Otros ejemplos del touchscreen específico GUIs del uso incluyen las máquinas de caja
automática más recientes, uno mismo-marcar de la línea aérea, quioscos de la información
y las pantallas de monitor /control en los usos industriales encajados que emplean un
sistema operativo en tiempo real (RTOS). Los teléfonos móviles y los sistemas o consolas
de juego también emplean el touchscreen, además de no entenderse la domótica sin un
buen interfaz de usuario o GUI.
Autonomía
La computadora, la IU y el entorno de trabajo deben estar a disposición del usuario. Se
debe dar al usuario el ambiente flexible para que pueda aprender rápidamente a usar la
aplicación.
Percepción del Color
Aunque se utilicen convenciones de color en la IU, se deberían usar otros mecanismos
secundarios para proveer la información a aquellos usuarios con problemas en la
visualización de colores.
Legibilidad
18
Para que la IU favorezca la usabilidad del sistema de software, la información que se
exhiba en ella debe ser fácil de ubicar y leer. Es importante hacer clara la presentación
visual (colocación /agrupación de objetos, evitar la presentación de excesiva información.
3.3.1. GLADE
Glade es un desarrollador de interfaces Permite construir de forma gráfica e interactiva
interfaces de usuario gráficos para Gnome/Gtk, publicado bajo la licencia GNU GPL.
Glade también permite definir los nombres de los handler (funciones) que se asociarán a
cada uno de los eventos del interfaz.
La Librería libGlade
Una vez hemos creado visualmente el interfaz deberemos usarlo en nuestros
programas, para esto glade nos brinda dos opciones:
La primera forma es que el propio Glade genere el código en C que crea el interfaz,
código en el que posteriormente uniremos con nuestro rograma, esta opción suele ser poco
recomendable porque es un poco engorrosa.
La segunda manera de hacerlo es usar Glade para que genere un fichero en el cual se
describe con XML el interfaz. Este fichero nos servirá para especificárselo a la librería
libglade, la cual, mediante un par de llamadas ejecutara el código necesario para usar el
interfaz en nuestro programa.
3.3.2. GTK
GTK(GIMP Toolkit) es una biblioteca para crear interfaces graficas de usuario.
Su licencia es la LGPL, así que mediante GTK podría desarrollar programas con
licencias abiertas, gratuitas, libres y hasta licencias comerciales no libres sin mayores
problemas.
GTK está construido encima de GDK (GIMP Drawing Kit) que básicamente es un
recubrimiento de las funciones de bajo nivel que deben haber para acceder al sistema de
ventanas sobre el que se programe. Se llama el UIMP toolkit porque fue escrito para el
19
desarrollo del General Image Manipulation Program (GIMP), pero ahora GTK se utiliza en
un gran número de proyectos de programación, incluyendo el proyecto GNU Network
Object Model Environment (GNOME).
GTK es esencialmente una interfaz para la programación de aplicaciones
orientadas a objetos (API). Aunque esta completamente escrito en C, esta
implementado haciendo uso de la idea de clases y de funciones respuesta o de
callback(punteros o funciones).
3.3.3. TCL/TK
TCL(Tool Command Languaje) es un lenguaje de programación interpretado y
multiplataforma. Es distribuido de forma totalmente gratuita, aunque su uso sea para
aplicaciones comerciales, a través de Internet.
Una de sus principales características es su gran facilidad con la que se pueden
implementar funciones en C/C++ que pasan a ser nuevas instrucciones del intérprete. La
extensión más conocida, y que es distribuida junto con el propio TCL, es TK(Tool Kit).
TK añade a los comandos de TCL, comandos capaces de crear interfaces gráficos de
usuario.
Ventajas de TCL/TK
Sencillez de programación
Rapidez en el desarrollo de las aplicaciones (Tecnología RAD)
Gran velocidad comparado con otros lenguajes interpretados
Facilidad de modificación de las aplicaciones
Multiplataforma
Gran número de extensiones gratuitas
Posibilidad de incorporar nuevos comandos en lenguaje C/C++
Inconvenientes de TCL/TK
Excesivamente lento comparado con los lenguajes compilados
Necesidad del intérprete para ejecutar una aplicación
Difícil de depurar
3.3.4. QTK
Es una herramienta construida a partir de TCL/TK, que permite a los diseñadores de
interfaces de usuarios adoptar un enfoque basado en modelos rentables para el diseño de
interfaces de usuario ejecutables.
20
En esta herramienta los widgets pueden ser manejados y controlados dinámicamente y
así facilita el desarrollo de las aplicaciones de las interfaces de usuario. El modulo QTK
esta basado en el uso de descripciones de usuario.
El enfoque de la descripción es particularmente útil en un lenguaje simbólico
como OZ, que permite la creación fácil y concisa de estructuras de datos.
Ventajas de QTK
Unicidad de Lenguaje
Reduce los costos de desarrollo
Integración ligada de herramientas
3.3.5. WXWINDOWS
Es una biblioteca de clases para C++ y python, que permite el desarrollo de
aplicaciones con interfaces graficas de usuario de una manera rápida y sencilla. Su
principal característica es que es multiplataforma.
wxWindows se distribuye bajo licencia wxWindows Library License, que es similar a
la GNU Library General Public License pero que además permite usar la biblioteca para
desarrollos comerciales(ya sean aplicaciones o modificaciones de la propia biblioteca),
siempre y cuando estos desarrollos comerciales no usen ningún código distribuido bajo
alguna licencia GNU.
Características generales
21
requiere de manejo de punteros. Posee varias bibliotecas para manejo de bases de datos,
destacando ADO.
El compilador de Microsoft genera ejecutables que requieren una DLL para que sus
ejecutables funcionen, en algunos casos llamada MSVBVMxy.DLL (acrónimo de
"MicroSoft Visual Basic Virtual Machine x.y", siendo x.y la versión) y en otros
VBRUNXXX.DLL ("Visual Basic Runtime X.XX"), que provee todas las funciones
implementadas en el lenguaje. Además existen un gran número de bibliotecas (DLL) que
facilitan el acceso a muchas funciones del sistema operativo y la integración con otras
aplicaciones.
Derivados
Ventajas e inconvenientes
Ventajas
22
• Su mayor facilidad radica en el dibujado de formularios, mediante el arrastre de
controles.
• La sintaxis está cercana al lenguaje humano.
• Las ramas de Visual Basic X ha muerto. Microsoft ha comenzado con su
versión .NET, completamente diferente del Visual Basic original. Visual Basic .NET
compila hacia el mismo código final que C#. Visual Basic .NET es mucho más potente y
alberga muchas más funcionalidades que ésta versión.
• Es un lenguaje RAD, centrado en conseguir en el menor tiempo posible los
resultados deseados, por eso mismo su mayor uso está en las pequeñas aplicaciones, como
gestión de bares, empresas, restaurantes...
• Tiene una ligera implementación de POO
• Permite el tratamiento de mensajes de Windows.
• Gran parte del trabajo en el diseño de formularios está realizado, gracias a la
gran gama de controles incorporados junto al lenguaje que ahorran costes de tiempo de
desarrollo.
• Permite crear controles personalizados fácilmente del mismo modo que el
diseño de formularios.
Inconvenientes
• Es propietario de Microsoft, por tanto nadie que no sea del equipo de desarrollo
de esta compañía decide la evolución del lenguaje.
• Sólo existe un compilador & IDE, llamado igual que el lenguaje.
• Sólo genera ejecutables para Windows.
• La sintaxis es bastante inflexible.
• Los ejecutables generados son relativamente lentos.
• NO es adecuado para aplicaciones grandes, multimedia, de oficina,
videojuegos, editores gráficos...
• NO permite características de programación avanzada.
• NO permite generar librerías dinámicas (DLL).
• Sólo permite el uso de funciones de librerías dinámicas (DLL) stdcall.
• Para que los ejecutables que genera funcionen necesita una DLL llamada
MSVBVMxy.DLL: MicroSoft Visual Basic Virtual Machine x.y (versión). Provee todas
las funciones y características implementadas en el lenguaje.
23
• Algunas funcionalidades están indocumentadas.
• La ligera implementación de POO no permite sacar el máximo provecho de este
modelo de programación.
• NO soporta tratamiento de procesos como parte del lenguaje.
• NO tiene manejo de excepciones.
• NO incluye operadores a nivel de bits.
• NO permite el manejo de memoria dinámica, punteros, arrays, etc. como parte
del lenguaje.
• NO avisa de ciertos errores o advertencias, como la conversión de tipos
inadecuada.
• El tratamiento de mensajes de Windows es básico e indirecto.
• La gran gama de controles incorporados son, sin embargo, muy generales, lo
que lleva a tener que reprogramar nuevos controles para una necesidad concreta de la
aplicación.
• Los controles personalizados no mejoran la potencia de la API de Windows, y
en determinados casos acudir a ésta será el único modo de conseguir el control
personalizado deseado.
• La forma de programación que plantea Visual Basic ha ocasionado que muchos
programadores de Visual Basic practiquen malas costumbres, entre las más comunes:
o Arrays empezados en 1
o Variables globales
o Variables sin declarar
o Variables de tipo indefinido (Variant)
o Variables con nombres inexpresivos
o Código innecesario
o Código ilegible
o Código repetido - Falta de funciones y procedimientos
o Uso incorrecto de la API de Windows
o Uso de goto y etiquetas
o Uso de controles como simples contenedores de datos
o Dependencia de los controles a la hora de programar
24
3.3.7. JAVA.
3.3.7.1. Características.
LENGUAJE FAMILIAR:
Java no supuso de inicio una transformación total, partiendo del punto que se ha
utilizado C y luego nos hemos movido algo en C++ iniciándonos ya en la programación
orientada a objetos.
Para que un lenguaje pueda considerarse orientado a objetos debe soportar como
mínimo las características de:
-encapsulación
-herencia
-polimorfismo
-enlace dinámico.
LENGUAJE ROBUSTO:
25
LENGUAJE DE ALTO RENDIMIENTO ( MÚLTIPLES THREADS ):
LENGUAJE PORTABLE:
Los diseñadores de Java trataron de mantener las facilidades básicas del lenguaje en un
mínimo y proporcionar un gran número de extras con las librerías de clases.
LENGUAJE SEGURO:
Se pretendía construir un lenguaje de programación que fuese seguro, esto es, que no
pudiera acceder a los recursos del sistema de manera incontrolada. Por este motivo se
eliminó la posibilidad de manipular la memoria mediante el uso de punteros y la capacidad
de transformación de números en direcciones de memoria ( tal y como se hace en C )
evitando así todo acceso ilegal a la memoria. Esto se asegura porque el compilador Java
efectúa una verificación sistemática de conversiones.
3.3.7.2.1. Introducción
Las JFC (Java Foundation Classes) son parte de la API de Java compuesto por clases
que sirven para crear interfaces gráficas visuales para las aplicaciones y applets de Java.
26
Así como Sun presenta estas JFC, Microsoft ha desarrollado otro paquete propio con el
nombre de AFD (Application Foundation Classes).
• AWT presenta componentes pesados, que en cada plataforma sólo pueden tener
una representación determinada. Está disponible desde la versión 1.1 del JDK como
java.awt.
• Swing presenta componentes ligeros, que pueden tomar diferente aspecto y
comportamiento pues lo toman de una biblioteca de clases. Está disponible desde la
versión 1.2 del JDK como javax.swing aunque antes se podían encontrar versiones previas
como com.sun.java. o como java.awt.swing.
B. Modelo de eventos
Tanto AWT como Swing tienen en común un sistema para gestionar los eventos que se
producen al interactuar con el usuario de la interfaz gráfica; su modelo de eventos.
Para cada objeto que represente una interfaz gráfica, se pueden definir objetos
"oyentes" (Listener), que esperen a que suceda un determinado evento sobre la interfaz.
Por ejemplo se puede crear un objeto oyente que esté a la espera de que el usuario pulse
sobre un botón de la interfaz, y si esto sucede, él es avisado, ejecutando determinada
acción.
La clase base para todos estos eventos que se pueden lanzar es la clase AWTEvent
(perteneciente al paquete java.awt). El modelo de eventos de AWT depende del paquete
java.awt.event, que en Swing se amplía con el paquete javax.swing.event.
27
C. Subpaquetes de AWT
A continuación se enumeran los paquetes que componen las JFC, así como su
funcionalidad, ordenados por orden de antigüedad. Esto es importante, porque debe de
tenerse en cuenta si se va a utilizar para crear applets, ya que normalmente los
navegadores no soportan la última versión de la API de Java en su propia máquina virtual.
Si queremos que nuestra applet se vea igual en varios navegadores, deberemos de tener
en cuenta qué paquetes podemos utilizar y cuáles no, comprobando la versión de Java que
soportan los navegadores que nos interesen.
• java.awt: Contiene todas las clases básicas de AWT para crear interfaces e
imprimir gráficos e imágenes, así como la clase base para los eventos en componentes:
AWTEvent.
• java.awt.image: Para crear y modificar imágenes. Utiliza productores de
imágenes, filtros y "consumidores de imágenes". Permite renderizar una imagen mientras
está siendo generada.
28
• java.awt.im: Para utilizar símbolos Japoneses, Chinos o Coreanos.
• java.awt.image.renderable: Para producir imágenes que sean independientes de
redering (animación).
• java.awt.print: Para imprimir documentos. Incorpora capacidad para gestionar
diversos tipos de documentos, formatos de página e interactuar con el usuario para
controlar la impresión de trabajos.
D. Subpaquetes de Swing
29
• javax.swing.text.rtf: Contiene la clase RTFEditorKit para crear editores de
documentos en formato RTF (Rich-Text-Format).
• javax.swing.tree: Para personalizar la forma en que son utilizados los árboles
generados por la clase java.awt.swing.JTree.
• javax.swing.undo: Permite realizar operaciones de deshacer/rehacer en las
aplicaciones que cree el usuario.
A. Introducción
Este paquete viene incluido en la API de Java como java.awt ya desde su primera
versión, con lo que las interfaces generadas con esta biblioteca funcionan en todos los
entornos Java disponibles (incluyendo navegadores, lo que les hace especialmente
eficientes para la creación de applets Java).
La siguiente figura muestra la jerarquía de clases para las principales clases de AWT:
30
Imagen 7: Jerarquía de las clases de AWT
En este apartado vamos a estudiar algunas de las clases más importantes del AWT, así
como su funcionalidad.
B. Component
Esta clase representa a cualquier objeto que puede ser parte de una interfaz gráfica de
usuario. Es la clase padre de muchas de las clases del AWT.
Su propósito principal es representar algo que tiene una posición y un tamaño, que
puede ser dibujado en la pantalla y que pueda recibir eventos de entrada (que responda a
las interacciones con el usuario).
31
b.) Acciones sobre el componente
A su vez hay tres tipos de métodos, para la gestión de eventos mediante el nuevo
modelo de eventos de AWT (desde la versión 1.1).
C. Container
La clase Container sabe cómo mostrar componentes embebidos (que a su vez pueden
ser instancias de la clase Container).
32
• void printComponents(Graphics g); Imprime cada uno de los componentes de
este contenedor.
• LayoutManager getLayout(); Devuelve el gestor de impresión
(LayoutManager) asociado a este contenedor, que es el responsable de colocar los
componentes dentro del contenedor.
• void setLayout(LayoutManager 1); Establece un gestor de impresión para este
componente.
D. Gestores de impresión
E. Otras clases
Por supuesto AWT no se limita a estas clases. Dentro de esta biblioteca podemos
encontrar multitud de clases prefabricadas para facilitar el diseño gráfico.
33
• Panel: Permite hacer una presentación más avanzada que Container mediante la
combinación con subpaneles o subclases para crear contenedores personalizados. La clase
Applet que sirve para crear applets Java, hereda de esta clase Panel.
• ScrollPane: Una barra de desplazamiento, horizontal o vertical.
• Window: Una ventana sin borde.
• Frame: Una ventana que no tiene borde. Puede tener asociado un objeto
Menubar (una barra de herramientas o barra de menú personalizada).
• Dialog: Una ventana usada para crear diálogos. Tiene la capacidad de ser modal
con lo que sólo este contenedor recibiría entradas del usuario.
• Filedialog: Un diálogo que usa el selector de archivos nativo del sistema
operativo.
• Button: Un botón gráfico para el que se puede definir una acción que sucederá
cuando se presione el botón.
• Canvas: Permite pintar o capturar eventos del usuario. Se puede usar para crear
gráficos o como clase base para crear una jerarquía de componentes personalizados.
• Checkbox: Soporta dos estados: on y off. Se pueden asociar acciones que se
ejecuten (triggers) cuando el estado cambie.
• Choice: Menú desplegable de opciones.
• Label: Cadena de etiqueta en una localización dada.
• List: Una lista desplegable de cadenas.
• Scrollbar: Desplegable de objetos Canvas.
• TextComponent: Cualquier componente que permita editar cadenas de
texto.Tiene dos clases hijas:
• TextField: Componente de texto consistente en una línea que puede ser usada
para construir formularios.
• TextArea: Componente para edición de texto de tamaño variable.
F. Eventos de AWT
34
Son todos hijos del evento ComponentEvent, que indica algún cambio en un objeto
Component:
• InputEvent: Se ha producido una entrada del usuario. Tiene como eventos hijos
KeyEvent (pulsación de una tecla) y MouseEvent (acción sobre el ratón).
• FocusEvent: Avisa al programa de que el componente ha ganado o perdido la
atención (enfoque) del usuario. Esto se deduce de la actividad del usuario (ratón y
teclado).
• WindowEvent: Avisa al programa de que el usuario ha utilizado uno de los
controles de ventana a nivel del sistema operativo, como los controles de minimizar o
cerrar.
• ContainerEvent: Se envía cuando se añaden o eliminan componentes a un
contenedor.
• PaintEvent: Evento especial que señala que el sistema operativo quiere dibujar
de nuevo una parte de la interfaz. Un componente debe sobreescribir el método paint() o el
método update() para gestionar este evento.
Son todos hijos del evento AWTEvent, que es el evento base de la jerarquía de eventos:
3.3.7.2.3. SWING
A. Introducción
35
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:
B. Nuevas características
36
• Amplia variedad de componentes: En general las clases que comiencen por "J"
son componentes que se pueden añadir a la aplicación. Por ejemplo: JButton.
• Aspecto modificable (look and feel): Se puede personalizar el aspecto de las
interfaces o utilizar varios aspectos que existen por defecto (Metal Max, Basic Motif,
Window Win32).
• Arquitectura Modelo-Vista-Controlador: Esta arquitectura da lugar a todo un
enfoque de desarrollo muy arraigado en los entornos gráficos de usuario realizados con
técnicas orientadas a objetos. Cada componente tiene asociado una clase de modelo de
datos y una interfaz que utiliza. Se puede crear un modelo de datos personalizado para
cada componente, con sólo heredar de la clase Model.
• Gestión mejorada de la entrada del usuario: Se pueden gestionar combinaciones
de teclas en un objeto KeyStroke y registrarlo como componente. El evento se activará
cuando se pulse dicha combinación si está siendo utilizado el componente, la ventana en
que se encuentra o algún hijo del componente.
• Objetos de acción (action objects): Estos objetos cuando están activados
(enabled) controlan las acciones de varios objetos componentes de la interfaz. Son hijos de
ActionListener.
• Contenedores anidados: Cualquier componente puede estar anidado en otro. Por
ejemplo, un gráfico se puede anidar en una lista.
• Escritorios virtuales: Se pueden crear escritorios virtuales o "interfaz de
múltiples documentos" mediante las clases JDesktopPane y JInternalFrame.
• Bordes complejos: Los componentes pueden presentar nuevos tipos de bordes.
Además el usuario puede crear tipos de bordes personalizados.
• Diálogos personalizados: Se pueden crear multitud de formas de mensajes y
opciones de diálogo con el usuario, mediante la clase JOptionPane.
• Clases para diálogos habituales: Se puede utilizar JFileChooser para elegir un
fichero, y JColorChooser para elegir un color.
• Componentes para tablas y árboles de datos: Mediante las clases JTable y
JTree.
• Potentes manipuladores de texto: Además de campos y áreas de texto, se
presentan campos de sintaxis oculta JPassword, y texto con múltiples fuentes JTextPane.
Además hay paquetes para utilizar ficheros en formato HTML o RTF.
• Capacidad para "deshacer": En gran variedad de situaciones se pueden deshacer
las modificaciones que se realizaron.
37
• Soporte a la accesibilidad: Se facilita la generación de interfaces que ayuden a
la accesibilidad de discapacitados, por ejemplo en Braille.
C. Principales clases
Todas las clases explicadas en el apartado "IV.2 AWT" de este tutorial tienen una nueva
versión en Swing con el prefijo J. 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.
Swing incorpora nuevos gestores de impresión, ampliando los cinco que AWT
incorporaba. Entre ellos conviene destacar los siguientes:
38
• BoxLayout: Es similar al FlowLayout de AWT, con la diferencia de que con él
se pueden especificar los ejes (x o y). Viene incorporada en el componente Box, pero está
disponible como una opción en otros componentes.
• OverlayLayout: Todos los componentes se añaden encima de cada componente
previo.
• SpringLayout: El espacio se asigna en función de una serie de restricciones
asociadas con cada componente.
• ScrollPaneLayout: Incorporado en el componente ScrollPane.
• ViewportLayout: Incorporado en el componente Viewport.
E. JrootPane
La clase JRootPane permite colocar contenido de las applets creadas con la clase
JApplet en un determinado plano de impresión (capa).
• glassPane: Una capa que abarca toda la parte visible (por defecto no es visible).
• layeredPane: Una subclase de JComponent diseñada para contener cuadros de
diálogo, menús emergentes y otros componentes que deben aparecer flotando entre el
usuario y el contenido.
• menubar: Una capa opcional, que si aparece estará anclada en la parte superior.
• contenPane: La capa en que se dibujará la mayor parte del contenido.
Así pues cada vez que se vayan a añadir componentes a una applet de clase JApplet,
debe añadirse a uno de estas capas. Por ejemplo:
laJApplet.getContentPane().add( unComponente );
39
• MenuKeyEvent: Un menú de árbol ha recibido un evento de KeyEvent (acción
sobre el ratón).
• MenuDragMouseEvent: Un menú de árbol ha recibido un evento de
MouseEvent (pulsación de una tecla).
Son todos hijos del evento de AWT AWTEvent, que es el evento base de la jerarquía de
eventos:
40
• Modelo: Almacena el estado interno en un conjunto de clases.
• Vista: Muestra la información del modelo
• Controlador: Cambia la información del modelo (delegado).
La elección de JAVA para la realización del programa obedece a varios puntos que ya
hemos mencionado al hablar de sus características más importantes.
41