Publicado el 14 de Enero del 2017
1.422 visualizaciones desde el 14 de Enero del 2017
849,2 KB
29 paginas
Creado hace 16a (01/04/2009)
Ingeniería Software
Ingeniería software
4º de Físicas
4º Físicas
Desarrollo de interfaces gráficas de usuario
usando SWT
(Standard Widget Toolkit)
José M. Drake y Patricia López
Computadores y Tiempo Real
Santander, 2008
1
Interfaces gráficas: Programación dirigida por eventos
Una GUI constituye un ejemplo de programa dirigido por eventos:
! el programa sólo realiza acciones en respuesta a las órdenes recibidas por el usuario
! las órdenes se envían a través de las interacciones del usuario con la interfaz
Santander, 2008
SWT
J.M. Drake y P. López
2
Recursos para desarrollo de GUIs en Java
AWT – Abstract Windows Toolkit
! Tiene una arquitectura muy simple y consiste en una capa que permite el
acceso desde Java de los recursos gráficos disponibles en el sistema
(Windows, Macintosh, Linux, etc.)
Swing – Introducidas con las Java FoundationClasses
! Son componente puramente Java y crean un aspecto que es
independiente del sistema que queda por debajo.
SWT - Standard Widget Toolkit
! Ha sido introducido con la plataforma Eclipse y es una capa muy fina
que proporciona acceso a los elementos nativos. Se basa en la definición
de una interfaz muy sencilla y común para todos los sistemas
JFACE
! Ha sido introducido con la plataforma Eclipse y proporciona recursos
para llevar a cabo las tareas comunes del desarrollo de GUIs. Es útil
cuando se desarrollan GUIs complejas
Santander, 2008
SWT
J.M. Drake y P. López
3
Incorporar la librería SWT a un proyecto Java en Eclipse
Pulse el botón derecho sobre el proyecto y seleccione Build Path >
Configure Build Path
Seleccione la pestaña Libraries y pulse el botón Add Library.
Seleccione la librería SWT pulse Next y OK para finalizar añadiendo
las librerías SWT a su proyecto.
Santander, 2008
SWT
J.M. Drake y P. López
4
Ejemplo HelloWorld
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello World");
shell.setBounds(100, 100, 200, 200);
shell.setLayout(new FillLayout());
Label label = new Label(shell, SWT.CENTER);
label.setText("Hola Mundo");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
01 public class Helloword {
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16 }
}
display.dispose();
}
Santander, 2008
SWT
J.M. Drake y P. López
5
Estructura de una GUI desarrollada con SWT
Los objetos de la clase Display representan el enlace entre la aplicación SWT y el gestor
de ventanas del sistema operativo
! No son visibles
!
Existe un único elemento Display por cada aplicación
Los objetos de la clase Shell representan ventanas visibles dentro de la GUI a través de
las que se interacciona con el usuario
! Actúa como parent o contenedor de los elementos (Widgets) que forman la GUI.
! Gestiona los desplazamientos y cambios de tamaño.
!
Existe siempre una ventana principal, que se asocia en su creación al Display que la gestiona
Pueden existir ventanas secundarias o diálogos, que se asocian a otras ventanas
!
Widget es la clase raíz de todos los elementos gráficos que se pueden utilizar en una GUI
SWT
!
Todos los widgets se crean asociados al elemento que pertenecen
La creación de cualquier GUI en SWT se inicia siempre:
Display display = new Display();
Shell shellPrincipal = new Shell(display);
Santander, 2008
SWT
J.M. Drake y P. López
6
Clase Display
Constructor:
! Display()
Cuando se requiera invocar el objeto Display se puede obtener por los métodos:
! getCurrent() Retorna el display asociado al thread (línea de flujo) actual, o null si no
hay ninguno asociado a dicho thread.
! getdefault() Retorna el display por defecto, que es el primero que se creo en el
sistema. Si no existe ninguno, se crea uno.
Otros métodos de interes ofrecidos por la clase Display son:
!
close() Cierra la conexión entre la GUI y el sistema operativo.
dispose() : Libera los recursos del sistema asociados al display
getActiveShell() Retorna la ventana activa.
getShells() Retorna un array con todas las ventanas disponibles asociadas al display.
getCursorControl() Retorna el elemento de la GUI sobre el que está situado el cursor.
getCursorLocation() Retorna la posición del cursor respecto a la esquina superior
izquierda de
getFocusControl() Retorna el elemento que se encuentra enfocado.
getSystemColor(int) Retorna un color estándar por su índice.
getSystemFont() Retorna el tipo de letra establecido por defecto.
la pantalla
!
!
!
!
!
!
!
!
Santander, 2008
SWT
J.M. Drake y P. López
7
Clase Shell
Constructor:
! Shell (Display display) : Crea una ventana asociada al correspondiente display (ventana de
primer nivel).
! Shell (Shell shell) : Crea una ventana asociada a otra (ventana secundaria).
Métodos contenidos en su API son:
! close() Cierra la ventana y libera los recursos del sistema.
! getdisplay() Retorna el display que soporta a la ventana.
! getShells() Retorna el array con todas las ventanas definidas en ella.
! isEnabled() Retorna True si la ventana está habilitada.
! open() Construye la ventana para que se haga visible y admita interacciones.
! setActive() Pasa la ventana a primer plano
! setEnabled(boolean enabled) Habilita/deshabilita la ventana para que reciba
eventos.
! setVisible(boolean visible) Haz visible/novisible la ventana.
Santander, 2008
SWT
J.M. Drake y P. López
8
Gestión de eventos en una GUI
La interacción entre la GUI y el sistema operativo está dirigida por eventos (los
generados por interacción con los elementos de la GUI).
El thread de la GUI (el que crea el Display) es el único que puede crear o modificar
elementos de control. Si lo hace otro thread, se lanza la excepción SWTException.
El thread de la GUI permanece a la espera de la llegada de eventos, los atiende y
vuelve de nuevo a situación de espera
while (!shell.isDisposed()) {
if
(!display.readAndDispatch())
display.sleep();
}
The GUI Thread
Has the shell been disposed?
yes
no
Reads and dispatches events
Are there events
for dispatching?
yes
no
sleeps
Disposes the display
and exits.
Santander, 2008
SWT
J.M. Drake y P. López
9
Jerarquía de los elementos de control
En el árbol de la derecha se muestra
la jerarquía de los elementos que se
proporcionan en la librería SWT
Todos los elementos descienden de
alguna
clases
abstractas:
estas
tres
de
! Widget: Es el antecesor de todos los
objetos que se pueden añadir a una GUI
SWT.
! Control: Es el antecesor de todos los
elementos visibles que se pueden incluir
en una GUI SWT.
!
Scrollable: Es el antecesor de todos los
elementos que pueden ser muy grandes,
y por tanto pueden incorporar bandas
laterales de desplazamiento
Santander, 2008
SWT
J.M. Drake y P. López
10
Clase Control
La clase Control, de la que heredan todos los elementos, es la que tiene los
métodos generales más importantes. Algunos métodos interesantes son:
! getdisplay() Retorna el display con el que interacciona con el sistema.
! getParent() Retorna el elemento dentro del que se ha declarado.
! getShell() Retorna el shell dentro de que se encuentra declarado.
! isEnabled() Retorna True si el elemento está habilitado para la interacción.
! isVisible() Retorna True si es visible en la ventana.
! setBackground(Color) Establece el color de fondo.
! setBounds(Rectangle) Establece el tamaño y la posición del elemento de control.
! setEnabled(boolean) Habilita el elemento para que admita interacción.
! setVisible(boolean) Haz que aparezca visible o no el elemento de control.
! boolean setFocus() Enfoca el elemento de control para que reciba los eventos del
teclado.
! setFont(Font) Establece el tipo de letra.
! setLayoutData(Object) Establece los datos que definen la política de distribución de
elementos dentro de él.
! setSize(Point) Establece el tamaño del elemento de control.
Santander, 2008
SWT
J.M. Drake y P. López
11
Clase Label
Control estático que muestra texto o imágenes no modificables
Constructor:
! Label (Composite parent, int style)
Estilos que son útiles cuando se crea son:
SWT.SHADOW_IN Creates an inset shadow around the widget.
SWT.SHADOW_OUT Creates an outset shadow around the widget.
SWT.SHADOW_NONE Creates a widget with no shadow.
SWT.WRAP Causes the text of the widget to wrap onto multiple lines, if necessary.
SWT.SEPARATOR Creates a single vertical or horizontal line.
SWT.HORIZONTAL Creates a horizontal line.
SWT.VERTICAL Creates a vertical line.
SWT.LEFT Left-justifies the widget within its bounding box.
SWT.RIGHT Right-justifies the widget within its bounding box.
SWT.CENTER Centers the widget within its bounding box.
"
"
"
"
"
"
"
"
"
"
Métodos que ofrece su API son:
! setAlignment(int) Controls how text and images will be displaye. Valid arguments
include SWT.LEFT, SWT.RIGHT, and SWT.CENTER.
! setImage(Image) Sets the receiver's image to the argument, which may be null,
indicating that no image should be displayed.
! setText(String) Sets the receiver's text.
Santander, 2008
SWT
J.M. Drake y P. López
12
Clase Button
Control que representa un botón, que puede iniciar una acción cuando se pulsa con el ratón.
Constructor:
! Button (Composite parent, int style)
Estilos útiles para la creación de botones son:
!
!
!
!
!
!
!
!
!
!
!
!
SWT.ARROW Creates an arrow button widget.
SWT.CHECK Creates a checkbox widget.
SWT.PUSH Creates a pushbutton widget.
SWT.RADIO Creates a radio button widget.
SWT.TOGGLE Creates a toggle button widget.
SWT.UP / SWT.DOWN Creates an upward/downward-pointing arrow button.
SWT.LEFT/ SWT.RIGHT Creates a leftward/rightwared-pointing arrow
Comentarios de: Desarrollo de interfaces gráficas de usuario usando SWT (Standard Widget Toolkit) - Ingeniería software - 4º de Físicas (0)
No hay comentarios