tema 1. diseño de interfaces gráficas

18
1 TEMA 1. TEMA 1. Diseño de interfaces Diseño de interfaces gráficas gráficas 1. 1. Introducción Introducción 2. 2. Componentes de la interfaz Componentes de la interfaz 3. 3. Programación dirigida por Programación dirigida por eventos eventos 4. 4. Gestores de ubicación Gestores de ubicación 5. 5. Primitivas gráficas de pantalla. Primitivas gráficas de pantalla. 6. 6. Diseño de interfaces gráficas de Diseño de interfaces gráficas de usuario usuario

Upload: gavril

Post on 06-Jan-2016

38 views

Category:

Documents


1 download

DESCRIPTION

TEMA 1. Diseño de interfaces gráficas. Introducción Componentes de la interfaz Programación dirigida por eventos Gestores de ubicación Primitivas gráficas de pantalla. Diseño de interfaces gráficas de usuario. Bibliografía. http://java.sun.com/docs/books/tutorial/uiswing/ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: TEMA 1. Diseño de interfaces gráficas

11

TEMA 1.TEMA 1.Diseño de interfaces Diseño de interfaces gráficasgráficas

1.1. IntroducciónIntroducción

2.2. Componentes de la interfazComponentes de la interfaz

3.3. Programación dirigida por eventosProgramación dirigida por eventos

4.4. Gestores de ubicaciónGestores de ubicación

5.5. Primitivas gráficas de pantalla.Primitivas gráficas de pantalla.

6.6. Diseño de interfaces gráficas de Diseño de interfaces gráficas de usuariousuario

Page 2: TEMA 1. Diseño de interfaces gráficas

22

Bibliografía Bibliografía

http://java.sun.com/docs/books/http://java.sun.com/docs/books/tutorial/uiswing/tutorial/uiswing/

Kathy Walrath, et all. “The JFC Swing Kathy Walrath, et all. “The JFC Swing Tutorial”. Ed. Addison Wesley. 2004.Tutorial”. Ed. Addison Wesley. 2004.

http://www.programacion.com/java/http://www.programacion.com/java/tutorial/swing/tutorial/swing/

Page 3: TEMA 1. Diseño de interfaces gráficas

33

EventosEventos Todas las clases relativas a eventos son subclases de Todas las clases relativas a eventos son subclases de

java.util.EventObjectjava.util.EventObject. La biblioteca . La biblioteca java.awt.event y java.awt.event y java.swing.event java.swing.event contienen todos los eventos.

Todo evento posee un objeto fuente (Todo evento posee un objeto fuente (getSource()getSource()). ). Además, cada clase de evento posee una serie de Además, cada clase de evento posee una serie de métodos adecuados para todos los tipos de eventos métodos adecuados para todos los tipos de eventos que define (que define (getX() getX() y y getY()getY()).).

Sobre una componente se puede lanzar un evento. Sobre una componente se puede lanzar un evento. Cada tipo de evento es una clase distinta. Cuando el Cada tipo de evento es una clase distinta. Cuando el evento se lanza es recibido por uno o más de un evento se lanza es recibido por uno o más de un ""listenerlistener" que actúa sobre ese evento." que actúa sobre ese evento.

2 . Programación dirigida por eventos

Page 4: TEMA 1. Diseño de interfaces gráficas

44

EventosEventos Debemos crear un objeto Listener y registrarlo

en la componente sobre la que se lanza el evento con addXXXListener(), donde XXX es el tipo de evento que escucha. Toda la lógica del tratamiento debe ir en la clase listener.

Si a un botón le añadimos addActionListener() estamos indicando que método se debe activar cuando el botón es pulsado.

ActionListener es una interface que sólo tiene un método actionPerformed() significando "esta es la acción que será llevada a cabo cuando se lanza un evento". actionPerformed()

NO recibe un evento genérico, sino un tipo específico: ActionEvent.

2 . Programación dirigida por eventos

Page 5: TEMA 1. Diseño de interfaces gráficas

55

EventosEventosEvento->Interface del Listener-> métodos add &

removeKeyEvent KeyListener addKeyListener() & |

removeKeyListener()

2 . Programación dirigida por eventos

Page 6: TEMA 1. Diseño de interfaces gráficas

66

EventosEventos Si trabajamos con una componente y

sabemos los eventos que es capaz de recibir, los pasos a seguir serían los siguientes:– Tomamos el nombre del evento, le

quitamos la palabra "Event" y la cambiamos por "Listener".

– Implementamos el interface anterior escribiendo el código correspondiente para cada uno de los métodos de la interface.

– Creamos un objeto de la clase listener del paso anterior y la registramos en nuestras componentes.

2 . Programación dirigida por eventos

Page 7: TEMA 1. Diseño de interfaces gráficas

77

Eventos generalesEventos generales Component

– Notifica a los oyentes cambios en el tamaño, posición o visibilidad del componente.

Focus – Notifica a los oyentes que el componente a ganado o

perdido la posibilidad de recibir entrada desde el teclado.

Key – Notifica a los oyentes las pulsaciones de teclas; sólo

generado por el componente que tiene el foco del teclado.

Mouse – Notifica a los oyentes las pulsaciones del ratón y los

movimientos de entrada y salida del usuario en el área de dibujo del componente.

Mouse Motion – Notifica a los oyentes cambios en la posición del cursor

sobre el componente.

2 . Programación dirigida por eventos

Page 8: TEMA 1. Diseño de interfaces gráficas

88

EventosEventos

2 . Programación dirigida por eventos

Page 9: TEMA 1. Diseño de interfaces gráficas

99

EventosEventos

2 . Programación dirigida por eventos

Page 10: TEMA 1. Diseño de interfaces gráficas

1010

EventosEventos

2 . Programación dirigida por eventos

Page 11: TEMA 1. Diseño de interfaces gráficas

1111

AdaptadoresAdaptadores Hay casos en los que la interface sólo

tiene un método, con lo que la implementación es sencilla. Pero hay otros en el que podemos tener hasta 7 métodos que habría que reescribir de los que sólo nos interesan unos pocos.

Para evitar este problema cada una de la interfaces de los Listeners que tienen más de un método tienen un "adapter" que implementa completamente la interface.

Por ejemplo: MouseAdapter (para MouseListener), WindowAdapter (para WindowListener), etc...

2 . Programación dirigida por eventos

Page 12: TEMA 1. Diseño de interfaces gráficas

1212

AdaptadoresAdaptadoresclass p implements WindowListener { ..... public void windowIconified(WindowEvent e) { ...

sentencias...} // para los restantes eventos no hacemos nada public void windowActivated(WindowEvent e) {;} public void windowClosed(WindowEvent e) {;} public void windowClosing(WindowEvent e) {;} public void windowDeactivated(WindowEvent e) {;} public void windowDeiconified(WindowEvent e) {;} public void windowOpened(WindowEvent e) {;}}class p extends WindowAdapter { ..... public void windowIconified(WindowEvent e) { ... sentencias

...} // para los restantes eventos no hay que hacer nada. // El comportamiento deseado se hereda del adaptador =

no hacer nada}

2 . Programación dirigida por eventos

Page 13: TEMA 1. Diseño de interfaces gráficas

1313

OyentesOyentes

2 . Programación dirigida por eventos

Listener interface w/ adapter

Métodos en la interfaz

ActionListener actionPerformed(ActionEvent)

AdjustmentListener adjustmentValueChanged( AdjustmentEvent)

ComponentListener ComponentAdapter

componentHidden(ComponentEvent) componentShown(ComponentEvent) componentMoved(ComponentEvent) componentResized(ComponentEvent)

ContainerListener ContainerAdapter

componentAdded(ContainerEvent) componentRemoved(ContainerEvent)

FocusListener FocusAdapter

focusGained(FocusEvent) focusLost(FocusEvent)

KeyListener KeyAdapter

keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent)

MouseListener MouseAdapter

mouseClicked(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent)

MouseMotionListener MouseMotionAdapter

mouseDragged(MouseEvent) mouseMoved(MouseEvent)

WindowListener WindowAdapter

windowOpened(WindowEvent) windowClosing(WindowEvent) windowClosed(WindowEvent) windowActivated(WindowEvent) windowDeactivated(WindowEvent) windowIconified(WindowEvent) windowDeiconified(WindowEvent)

ItemListener itemStateChanged(ItemEvent)

TextListener TextValueChanged(TextEvent)

Page 14: TEMA 1. Diseño de interfaces gráficas

1414

EventosEventos Existen diferentes métodos para definir los

oyentes de los métodos:– Como clases internas dentro de la definición de

las clases componentes.– Como clases independientes, estableciendo

algún mecanismo para identificar la componente sobre la que se produce el evento.

– Directamente sobre la clase que extiende a la componente indicando que implemente la correspondiente interfaz

– Como clases anónimas.

2 . Programación dirigida por eventos

Page 15: TEMA 1. Diseño de interfaces gráficas

1515

EventosEventos Clase internaClass ComponenteIGU extends JPanelButton boton;

ComponenteIGU(){ boton= new Button(“ejemplo”);

add(boton); OyenteBoton oy= new OyenteBoton(); boton.addActionListener(oy); …}// Definición de la clase internaclass OyenteBoton implements ActionListenerpublic actionPerformer(ActionEvent e){ boton…..}

2 . Programación dirigida por eventos

Page 16: TEMA 1. Diseño de interfaces gráficas

1616

EventosEventos Clase externa

class OyenteBoton implements ActionListenerpublic actionPerformer(ActionEvent e){ problema al tratar de referenciar el boton e.getSource() boton…..}

2 . Programación dirigida por eventos

Page 17: TEMA 1. Diseño de interfaces gráficas

1717

EventosEventos Extendiendo la clase para que tenga

también la función de oyente.Class ComponenteIGU extends JPanel implements

ActionListenerButton boton;ComponenteIGU(){

boton= new Button(“ejemplo”); add(boton);

boton.addActionListener(this); …}public actionPerformer(ActionEvent e){ boton…..}

2 . Programación dirigida por eventos

Page 18: TEMA 1. Diseño de interfaces gráficas

1818

EventosEventos Como clase anónimaClass ComponenteIGU extends Jpanel implements

ActionListenerButton boton;ComponenteIGU(){

boton= new Button(“ejemplo”); add(boton);

boton.addActionListener( new ActionListener { public actionPerformer(ActionEvent e){ boton…..}})

2 . Programación dirigida por eventos