JAVA 6. Gestión de Eventos

Documentos relacionados
Introducción a la Programación Orientada a Objetos

Tema 6. Interfaces gráficas de usuario (Parte II Componentes y eventos)

EVENTOS en Java generador de un evento gestor de eventos

III SEMANAS GESTIÓN DE EVENTOS PROGRAMACIÓN II CICLO. Ing. Manuel Jesús Sánchez Chero Profesor del Curso

public void mousepressed(mouseevent evento) Se llama cuando se oprime un botón del ratón, mientras el cursor del ratón está sobre un componente.

Programación orientada a objetos. Capítulo 11 Construir interfaces gráficas de usuarios

INTERFAZ GRÁFICO DE USUARIO EVENTOS

Java es un lenguaje orientado a objetos, por lo que los objetos (las clases) son los elementos más importantes en el diseño y desarrollo de una

Interacción con el Usuario Gestión de Eventos

Programación Java Curso C GUI

Programación Orientada a Objetos. Componentes Gráficos

GESTIÓN DE EVENTOS GUI EN JAVA 13/04/2007 DAI. Evento: Objeto que describe qué sucede

Desarrollo de Aplicaciones en Java INF 473

Topicos GUI Avanzados

Interfaces Gráficas de Usuario en Java Julio Introducción. 2. Crear una ventana 2

Tipos de programas en Java. Programación basada en eventos. Programación basada en eventos. Creación de una interfaz gráfico de usuario

AWT y Swing. Entorno gráfico:awt y Swing. Soporte Java para el desarrollo de interface gráfica. AWT y Swing. AWT y Swing.

Tópicos Avanzados de Programación (TAP3501)

Indice. CardLayout. Administradores de diseño avanzados. CardLayout: pasos. CardLayout: métodos. Interfaz Gráfica de Usuario (GUI)

Intefaces gráficas. Eventos. Jose Jesus García Rueda

Desarrollo de Aplicaciones en Java INF 473

Programación de Eventos

Tema 8: Gestión de eventos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

import java.applet.*; import java.awt.*; import java.awt.event.*;

Java Foundation Classes -JFC-

Programación de sistemas

7.- ANEXOS. Anexo 1.-Diagramas uml LISTADO DE CLASES EN UML. Clase P1. Clase FrameAWT

Construir una Interfaz Gráfica

Interfaces Gráficas de Usuario Curso 04/05. Tema 5. Departament d Informàtica. Universitat de València. 1. Programación dirigida por eventos 4

Interfaces Gráficas de Usuario

Pasos requeridos para establecer el manejo de eventos para un componente de GUI.

Programación interactiva. Oscar Bedoya

Swing. Andrés Marín López Jesús Arias Fisteus Laboratorio de Aplicaciones Telemáticas

Programación de sistemas

Interfaces gráficas de usuario

Agenda. Contenedores y componentes

Programación basada en eventos Event- Based Programming : Conceptos. ELO329: Diseño y Programación Orientados a Objetos

Problema 1 (2 puntos)

Desarrollo de interfaces de usuario. Software para el desarrollo de interfaces de usuario (I) Apunte histórico

1 Funcionalidades Java que se presentan en esta práctica

Lenguajes de Programación Curso Práctica 8. Interfaces gráficas de usuario y Swing. Trabajo con modelos. 1. Un ejemplo 2. 2.

Manejo de eventos AWT

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Programación Conducida por eventos Event-driven programming. Agustín J. González ELO329/ELO330

import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*;

Práctica 4. Interfaces Gráficas de Usuario Duración 1 sesión

Interfaces gráficas. Jose Jesus García Rueda

Interfaces gráficas en Java GUIs Graphical User Interface

Programación Orientada a Objetos

INTERFACES GRÁFICAS. Algoritmia y Programación

Programación basada en/dirigida por eventos Event-Based Programming : Conceptos (o Event-driven Programming)

Ingeniería del Software. Capa de Presentación. Java 2 con JFC/SWING. Componentes visuales. Gestión de la interfaz

Ejemplo de GUI con Swing

Ingeniería en Desarrollo de Software 4 o semestre. Programa de la asignatura: Programación Orientada a Objetos II. Unidad 1. Eventos.

Interfases gráficas. Programación Orientada a Objetos.

HÉCTOR ARTURO FLÓREZ FERNÁNDEZ

INTERFAZ GRÁFICO DE USUARIO

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

Componentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)

Interfaces de usuario [Interfaces de usuario con Java]

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Tema 7. El AWT (Abstract Windows Toolkit)

APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...

ALGORITMICA Y PROGRAMACION POR OBJETOS I

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

CAPITULO 11. CONSTRUIR INTERFACES GRAFICAS DE USUARIO

Introducción a la Programación Orientada a Objetos

Aplicaciones gráficas en Java Librería Swing

GUIs en Java (4) Iván Alonso

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

En este método la implementación de la interface de usuario donde se produce el evento y la implementación del oyente están en clases separadas.

Unidad III. Interfaz de Escritorio SWING

2.1 Elementos gráficos en Java.

Introducción a componentes Swing

Programación de sistemas

Capítulo 7. Introducción a las Interfaces Gráficas de usuario. Continuar

Creando archivos *.jar 2008

Comunicándonos con el usuario. Interfaces

Transcripción:

JAVA 6. Gestión de Eventos import java.awt.event.* http://giig.ugr.es/ mgea/docencia/diu/diu.html Ultima actualización: 2/Nov/2004 1 1. Modelo de gestión de eventos Acción Usuario java.util.eventobject java.awt.event FocusEvent WindowEvent InputEvent KeyEvent MouseEvent ActionEvent... Clase de Eventos Source Componentes fuente de eventos java.util.eventlistener java.awt.event Interfaces FocusListener WindowListener ContainerListener KeyListener MouseListener ActionListener... Pertenece Clase Receptores Implementan Evento Registrado en addxxxlistener removexxxlistener Objetos receptores de eventos Modelo de Delegación de Eventos Listener 2 1

2. Ejemplo Fuentes Gestión Eventos Generación de eventos (IU) Receptores MousePressed ActionPerformed InputMethodListener Receptor 1: MouseListener Receptor 2: MouseListener Receptor 3 ActionListener Receptor 4 InputMethodListener Receptores (Listener) +Clases Adaptadoras 3 3. Tipos de eventos (bajo nivel) (semánticos) Eventos ComponentEvent ContainerEvent WindowEvent FocusEvent InputEvent (devices) KeyEvent MouseEvent ActionEvent AdjustementEvent InputMethod ItemEvent TextEvent Manipulación del componente Cambio de contenido (en contenedor) Cambio de estado en ventana (abierta, icono..) Obtención del foco de teclado (TAB) Evento de teclado Evento del ratón Acción específica de cada componente Cambio de ajuste Cambios en un control de entrada Cambio de selección de un ítem Cambio en un objeto de texto 4 2

3.1 Tipos de eventos: Teclado Eventos: Teclado (KeyEvent) Receptor: KeyListener KeyListener: Métodos KeyPressed (KeyEvent e); KeyReleased (KeyEvent e); KeyTyped(KeyEvent e); Evento teclado (KeyEvent e): e.getkeychar(); e.getkeycode(); e.getkeymodifierstext(); e.isaltdown(); e.isshiftdown(); Constantes: VK_B, VK_ALT, VK_F2... KeyTyped KeyPressed KeyReleased 5 3.2 Tipos de eventos: Ratón Eventos: Ratón (MouseEvent) Gestión: MouseListener mouseclicked(mouseevent e); mousepressed (mouseevent e); mousereleased (mouseevent e); mouseentered (mouseevent e); mouseexited (mouseevent e); Gestión: MouseMotionListener mousemoved (mouseevent e); mousedragged (mouseevent e); mouseentered mouseexited mouseclicked Receptores: MouseListener MouseMotionListener Evento ratón (MouseEvent e) e.getx(); e.gety(); e.getclickcount(); e.isaltdown(); e.isshiftdown(); BUTTON1_MASK... mousepressed mousereleased 6 3

3.3 Tipos de eventos: Semánticos Evento (ActionEvent e) e.actioncommand(); e.getwhen(); e.getmodiffiers(); ActionEvent: Evento que denota una acción específica de un componente (la mas usual) Evento (InputMethodEvent e) e.caret_position_changed // posición e.input_method_text_changed // texto Evento (ItemEvent e) e.selected e.deselected e.item_state_changed // estado alternado Gestión: ActionListener actionperformed(actionevent e) JButton, JList, JTextField, JMenuItem, JPopupMenu, Jmenu,... InputMethodEvent: Evento para control de las entradas de usuario Gestión: InputMethodListener inputmethodtextchanged(inputmethodevent event) JTextField, JTextArea,.. ItemEvent: Evento que controla el cambio de estado de un componente Gestión: ItemListener itemstatechanged(itemevent e) JChecKBox, JList, JComboBox 7 4. Objetos Receptores (Listener) Definen los métodos necesarios para cada gestión de Eventos Funcionalidad del receptor definida a través de INTERFACES ADAPTER: Clases genéricas que implementan los interfaces nulos Método de construcción 1) Creación de una clase que implemente el interface 2) Clase que herede del Adaptador (clase genérica) 3) Clase anónima 8 4

4.1. Objetos Receptores: Interfaces INTERFACES (receptores) ContainerListener WindowListener FocusListener EventListener KeyListener MouseListener MouseMotionListener ActionListener AdjustementListener ItemListener TextListener... public interface KeyListener extends EventListener { public void keytyped(keyevent e); public void keypressed(keyevent e); public void keyreleased(keyevent e); Definición de clases abstractas (lista de métodos obligatorios para gestionar un evento de ese tipo) Se debe crear una clase que implemente el interfaz 9 4.2. Objetos Receptores: Implementación Se deben programar todos los métodos del interfaz Class ControlTeclado implements java.awt.keylistener { public void keytyped(keyevent e) { System.out.println( pulsada la tecla +e.getkeychar); public void keypressed(keyevent e) { System.out.println( pulsando tecla +e.getkeychar); public void keyreleased(keyevent e) { System.out.println( soltando tecla +e.getkeychar); public interface KeyListener extends EventListener { public void keytyped(keyevent e); public void keypressed(keyevent e); public void keyreleased(keyevent e); 10 5

4.3. Objetos Receptores: Adaptadores Implementan INTERFACES (métodos nulos) No se necesita programar todos los métodos (sólo los que interesen) Class ControlTeclado extends java.awt.keyadapter { public void keytyped(keyevent e) { System.out.println( pulsada la tecla +e.getkeychar); public abstract class KeyAdapter implements KeyListener { public void keytyped(keyevent e) { public void keypressed(keyevent e) { public void keyreleased(keyevent e) { 11 4.4 Objetos Receptores: Clases anónimas Se crea la clase (anónima) al registrar el receptor. No posee identificador Útil si la clase es específica y no se usa desde otro lugar (por defecto en JBuilder) Pasos: Creación de la clase adaptadora (1) Se registra en el fuente (2) Se redefinen los métodos de interés (3) panelmouse.addkeylistener (new java.awt.keyadapter() { public void keytyped (KeyEvent e) { System.out.println( pulsada la tecla +e.getkeychar); ); // una sola sentencia Método redefinido 12 6

5. Manipulación directa (drag & drop) 1. Objeto arrastrable DragSourceListener 2. Objeto(s) receptor DropTargetListener 3. Gestor del Gesto DragGestureListener 4. Dato a transferir Implementa Componente arrastrable DragSource Gesto Transferible Dato Componente receptor DropTarget 13 5.1 Manipulación directa: objeto arrastrable Objeto Arrastrable (DagSource) DragSource Componente GUI (Interface) DragGestureListener (Interface) DragGestureRecognizer Transferable Botón izdo + [Ctrl] + [Shift] (Interface) DragSourceListerner 14 7

5.1 Manipulación directa: objeto arrastrable (cont.) Interface de objeto Arrastrable import java.awt.dnd.* public interface DragSourceListener { void dragenter(dragsourcedragevent dsde); void dragover(dragsourcedragevent dsde); void dropactionchanged(dragsourcedragevent dsde); void dragexit(dragsourceevent dse); void dragdropend(dragsourcedropevent dsde); 15 5.2 Manipulación directa: receptor Interface del gestor del gesto import java.awt.dnd.* public interface DragGestureListener { void void draggesturerecognized(draggestureevent dge); 16 8

5.2 Manipulación directa: receptor (cont.) import java.awt.dnd.* Interface del receptor del objeto public interface DropTargetListener extends EventListener { void dragenter(droptargetdragevent dtde); void dragover(droptargetdragevent dtde); void dropactionchanged(droptargetdragevent dtde); void dragexit(droptargetevent dte); void drop(droptargetdropevent dtde); 17 5.3 Manipulación directa: Relaciones Relaciones entre objetos DragGestureRecognizer DragGestureRecognized DragGestureListener startdrag DragSource new DragSourceListener setcursor DragSourceContext dragenter dragover... add dragenter dragover... DragSourceContextPeer 18 9

5.4 Manipulacíon directa: Ejemplo Ejemplo de objeto arrastrable public class DragLabel extends JLabel implements DragSourceListener, DragGestureListener { DragSource obj_arrastrar; public DragLabel(String s) { this.settext(s); obj_arrastrar = new DragSource(); obj_arrastrar.createdefaultdraggesturerecognizer(this, DnDConstants.ACTION_COPY, this); public void draggesturerecognized(draggestureevent e) { StringSelection texto = new StringSelection (gettext()); obj_arrastrar.startdrag(e, obj_arrastrar.defaultcopydrop, texto, this);... 19 5.4 Manipulacíon directa: Ejemplo (cont.) Ejemplo de objeto receptor public class DropList extends java.awt.list implements DropTargetListener { DropTarget obj_destino; public DropList() { obj_destino = new DropTarget(this,this); public void dragenter(droptargetdragevent e) { System.out.println( Ha entrado en el receptor"); e.acceptdrag(dndconstants.action_copy); 20 10

5.4 Manipulacíon directa: Ejemplo (cont.) Ejemplo de objeto receptor(cont.) // class DropList extends java.awt.list public void drop (DropTargetDropEvent e) { try { Transferable tr = e.gettransferable(); if(tr.isdataflavorsupported(dataflavor.stringflavor)) { e.acceptdrop(dndconstants.action_copy_or_move); String s = (String)tr.getTransferData(DataFlavor.stringFlavor); add(s); // añade a la lista e.getdroptargetcontext().dropcomplete(true); else { System.err.println("Dato no aceptado"); e.rejectdrop(); catch (IOException io) { io.printstacktrace(); e.rejectdrop(); catch (UnsupportedFlavorException ufe) { ufe.printstacktrace(); e.rejectdrop(); 21 11