Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3 TEMA
Esquema
TEMA 3 – Esquema
Aplicaciones Software
Vista
Modelo
Controlador
Model UI-Delegate
Jav a Swing
Eclipse NetBeans
WindowBuilder GUI Builder
Plataformas de Desarrollo de Software
Ideas clave
Para estudiar este tema lee las Ideas clave que encontrarás a continuación.
Por un lado, comenzaremos el estudio del funcionamiento del patrón Modelo Vista
Controlador. Este patrón es el usado para el diseño de las interfaces gráficas en Java,
en especial con la librería Swing, de la que repasaremos los componentes principales.
Antes de entrar en detalle de cómo se diseña e implementa una interfaz gráfica de usuario
(GUI) en Java usando Eclipse y NetBeans, vamos a repasar el patrón Modelo Vista
Controlador (Model View Controller, MVC).
El MVC es un patrón de diseño arquitectónico que nos permite separar los datos y
la lógica de negocio de una aplicación de su interfaz gráfica, permitiendo así la
reutilización de código. Es decir, al tener por un lado el código que implementa las
ventanas de la GUI de una aplicación y el código que implementa la aplicación en sí,
podemos modificar uno de los dos sin que el otro se vea afectado.
Por ejemplo, imaginemos que tenemos una aplicación de escritorio que realiza los
pedidos de una tienda a su distribuidor. Para ello el usuario tiene que rellenar los datos
que aparecen en una ventana donde aparece el logo y nombre de su tienda. Si queremos
usar esta aplicación para otra tienda, necesitaremos cambiar el diseño de esa ventana,
por ejemplo, añadiendo el logo y nombre de la otra tienda o también cambiando la
distribución del formulario.
Entonces, deberemos modificar solo el código relativo a la ventana sin tener que tocar el
código de la lógica de negocio de la aplicación en sí.
» El modelo, que contiene la lógica de negocio, o sea las clases que implementan el
funcionamiento de la aplicación.
» La vista, que representa lo que el usuario ve de aplicación, es decir las ventanas de la
interfaz gráfica.
» El controlador, que reacciona a las acciones del usuario, ejecutando los métodos
necesarios del modelo.
Crea o modifica
la V ista
Vista
Modelo Acción
Controlador
Notificación de la
acción al Modelo
El patrón Modelo Vista Controlador se implementa en Java con la librería Swing, que
permite el diseño de ventanas independientemente de la plataforma (por lo que vale para
diferentes sistemas operativos). Swing usa una versión un poco simplificada del patrón
llamada, model delegate. En esta versión simplificadas la vista y el controlador no
están separados si no que se encapsulan en un solo elemento (llamado UI delegate).
Entonces cada componente en Swing, contiene un modelo y un elemento UI delegate.
Este elemento es el encargado tanto de presentar las ventanas como de interactuar con
los eventos llevados a cabo por el usuario.
Para crear la vista, es decir para diseñar las ventanas de la GUI, la librería Swing posee
una serie de componentes que se muestran en la siguiente figura. Para crear la ventana
en sí es necesaria una clase que herede de JFrame y dentro se irían poniendo los
componentes, como cuadros texto, botones, etc.
Para implementar las acciones a llevar a cabo cuando los usuarios pulsen un botón, por
ejemplo, hace falta capturar ese evento. Para ello se usa la librería AWT y hay que
hacer que la clase implemente la interfaz ActionListener, y por ejemplo en el método
actionPerformed poner las operaciones a llevar a cabo cuando se pulse dicho botón.
Todo esto se puede hacer escribiendo el código directamente, pero para GUI complejas
con muchos elementos en cada ventana puede resultar muy tedioso. Para ello, muchos
IDE tienen diseñadores gráficos para construir las interfaces gráficas de forma
sencilla e intuitiva de modo WYSIWYG (What you see is what you get, lo que ves es lo
que obtienes) a veces con facilidades de drag and drop (arrastrar y soltar).
En las siguientes secciones veremos los diseñadores de interfaces gráficas más usados en
Eclipse y en NetBeans y lo sencillo que es su uso para diseñar GUI basadas en Swing.
ja va x.swing
jPa nel Abs tra ctButton jLa bel jTextComponent jSl i der jScrol lBar jLi s t
jRa dioButton
Desde hace ya algunos años, el plugin por excelencia para diseñar gráficamente las GUI
en Eclipse es WindowBuilder, ahora en su versión pro. Este plugin está compuesto de
dos diseñadores, el de Swing, que es el que nos interesa, y el de SWT (Standard Widget
Toolkit) un widget diseñado para acceder a las facilidades de las interfaces de usuario
dependiendo de la plataforma en la que se es implementado.
Usando el diseñador visual para crear las ventanas de formo intuitiva, el código que
implementa las ventanas de una GUI es generado automáticamente. Arrastrando y
soltando (drag-and-drop) se puede añadir fácilmente tanto los controles y luego hay
que añadir los manejadores de eventos (event handlers), que son los que reaccionara
ante los eventos realizados por el usuario.
Eclipse
WindowBuilder
V ista de
V ista de Diseño V ista de código Pa leta
Est ructura
Para ir soltando los componentes de manera ordenada en una ventana, se usan los
layouts, que también están disponibles en la paleta. Por ejemplo, al usar un
GridLayout la ventana se divide en filas y columnas donde soltaremos posteriormente
cada componente en una celda, como se observa en la siguiente figura.
En esta vista de diseño, como muestran las siguientes figuras, los componentes se pueden
editar, por ejemplo, modificando su texto. También se puede modificar su tamaño,
reordenar, etc.
En la opción Paleta aparecen todos los componentes que pueden añadirse a la GUI, o
sea los elementos de java.swing que vimos en la sección anterior y que representan a los
elementos típicos de una interfaz gráfica, como botones, cuadros de texto editable,
checkbox, scroll y un largo etcétera.
En esta vista de diseño también se pueden añadir los manejadores de eventos, o sea
qué queremos que haga la aplicación cuando el usuario haga una acción determinada,
como por ejemplo hacer clic en un botón.
Hay varias maneras de añadir los manejadores de eventos a los componentes en la vista
de diseño, pero una de las más frecuentes que se muestra en la siguiente figura, es
pulsando el botón derecho sobre el componente de la interfaz al que se le quiere añadir
un evento. Entonces en Add event handler se selecciona qué evento se quiere manejar
y automáticamente se crea el código del evento que se puede ver en la vista de código,
como se muestra a continuación.
Dentro de cada uno de esos métodos iría el código a ejecutar cuando se captura su
evento correspondiente y esto ya es responsabilidad del programador. Si la acción a llevar
a cabo implica la ejecución de otros métodos del modelo será aquí donde se llamen
a dichos métodos de las clases pertinentes.
La vista de código se puede poner en la misma ventana para facilitar su edición mientras
se sigue viendo la vista de diseño con la GUI. Esto se muestra en la siguiente figura.
Así una vez tenemos todas las ventanas de nuestra aplicación diseñadas y los
manejadores de eventos que reaccionan adecuadamente (implicando cambio de estado
en el modelo o no) cuando el usuario realiza alguna acción concreta tendríamos nuestra
aplicación completa con la GUI incluida. Pero en un futuro si quisiéramos
modificar o bien el diseño de la GUI o bien la forma en la que el modelo computa
cualquier cosa, solo tenemos que modificar los elementos en cuestión siendo ambos, el
modelo y el delegado (vista + controlador) independientes el uno del otro.
Para ejecutar la aplicación se procede de igual modo que se explicó en el tema anterior,
pero cuando una aplicación es muy grande con muchas clases y muchas ventanas, es muy
conveniente depurar el código para evitar errores de ejecución. Y esto se introducirá en
el siguiente tema.
El primer paso que hay que dar para crear una ventana es añadir un JFrame al proyecto
Java en cuestión, como se muestra en la siguiente figura:
Las principales ventanas del GUI Builder de NetBeans son las siguientes:
» Área de diseño, para crear y editar la interfaz gráfica tanto en modo diseño como
en modo código.
» Navegador, con una representación en estructura de árbol de todos los componentes
tanto visuales como no visuales.
» Paleta, con una lista de los componentes disponibles para añadir a las interfaces.
» Ventana de propiedades, con las propiedades del componente que está
seleccionado.
Net Beans
GUI Builder
V entana de
Á rea de Diseño Nav egador Pa leta
pr opiedades
Este es el código que se genera automáticamente por defecto para esta ventana
vacía. Tiene un método para inicializar los componentes de la GUI (initComponents) que
le dice a la aplicación que debe salirse cuando se cierre la ventana (EXIT_ON_CLOSE)
y maneja los temas de los layouts.
Finalmente, al igual que en Eclipse, el IDE permite navegar por los elementos gráficos
del proyecto, tanto en el Navegador como en el Inspector.
Ahora pasamos a añadir los manejadores de eventos a los componentes que haya que
reaccionar cuando el usuario lleve a cabo alguna acción. Esto también se hace de forma
muy similar a como vimos con Eclipse. Se selecciona un componente de la GUI y se le
añade un Evento como muestra la siguiente figura.
Como hemos visto, el uso de la librería Swing para crear GUI en Java nos permite
centrarnos por un lado en el diseño de la interfaz y por otro en el código de la aplicación
en sí. Y aunque es factible y se recomienda hacerlo al menos una vez escribir las líneas
de código para crear y diseñar las ventanas y para manejar los eventos, esta tarea puede
ser algo tediosa.
Lo + recomendado
No dejes de leer…
Accede al artículo a través del aula virtual o desde la siguiente dirección web:
http://www.discoduroderoer.es/instalar-y-desinstalar-plugins-en-eclipse/
No dejes de ver…
En el siguiente vídeo se muestra un tutorial creando una GUI paso a paso con Eclipse.
Accede al vídeo a través del aula virtual o desde la siguiente dirección web:
https://www.youtube.com/watch?v=vjiE6JaosNU
+ Información
A fondo
Accede al artículo a través del aula virtual o desde la siguiente dirección web:
http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.wb.doc.user%2Fhtml%
2Findex.html&cp=64
Accede al artículo a través del aula virtual o desde la siguiente dirección web:
https://netbeans.org/kb/docs/java/quickstart-gui.html
Enlaces relacionados
Página web con videos screencast con las principales características del GUI Builder.
Accede a la página web a través del aula virtual o desde la siguiente dirección:
https://netbeans.org/kb/docs/ide/overview-screencast.html
Test
5. El elemento JFrame:
A. Sirve para crear un botón.
B. Sirve para crear una ventana.
C. Está solo en Eclipse.
D. Está solo en NetBeans.
6. En Eclipse:
A. Se pueden crear las GUI tanto en código como de forma visual.
B. Solo se puede usar WindowBuilder para crear las GUI.
C. WindowBuilder solo crea la ventana, pero no maneja los eventos.
D. WindowBuilder solo maneja los eventos, pero no crea la ventana.
7. Actualmente WindowsBuilder:
A. Permite generar automáticamente el código de una GUI.
B. Es la versión Pro, un plugin de pago de Eclipse.
C. No permite visualizar el código de una ventana.
D. Es mejor que el GUI Builder de NetBeans.