Está en la página 1de 38

U II

Programacin
Orientada a Eventos

Eventos en Java
Un evento es resultado de la ejecucin
de una accin dentro de un entorno
grfico. Los eventos son objetos.
Los componentes (botones,
menues, campo de texto) son
generadores de eventos (origen)

Un origen de eventos debe


registrar objetos oyentes que
manipulen a los eventos

Eventos en Java
Oyente de eventos

Origen de eventos

registra

Objeto

Objeto
ge
n

er
a

Evento
Objeto

la
u
ip
n
a

El paquete java.awt.event
El paquete java.awt.event proporciona
clases base para generar eventos.

Contiene una serie de interfaces


para implementar objetos oyentes

Adicionalmente proporciona un grupo


de clases adaptadoras para facilitar
la codificacin

Paquete java.awt.event
Clases Adaptadoras

Object
Object

MouseAdapter
MouseAdapter
WindowAdapter
WindowAdapter

ComponentAdapter
ComponentAdapter
ContainerAdapter
ContainerAdapter

KeyAdapter
KeyAdapter
FocusAdapter
FocusAdapter

MouseMotionAdapter
MouseMotionAdapter
EventObject
EventObject

Clases Eventos

AWTObject
AWTObject

ItemEvent
ItemEvent

AdjustmentEvent
AdjustmentEvent

TextEvent
TextEvent

ActionEvent
ActionEvent
ComponentEvent
ComponentEvent

ContainerEvent
ContainerEvent

FocusEvent
FocusEvent

WindowEvent
WindowEvent
InputEvent
InputEvent

KeyEvent
KeyEvent
MouseEvent
MouseEvent

Paquete java.awt.event
EventListener
EventListener
ActionListener
ActionListener

MouseListener
MouseListener

AdjustmentListener
AdjustmentListener

MouseMotionListener
MouseMotionListener

ComponentListener
ComponentListener

MouseWheelListener
MouseWheelListener

ContainerListener
ContainerListener

TextListener
TextListener

FocusListener
FocusListener

WindowListener
WindowListener

ItemListener
ItemListener

WindowFocusListener
WindowFocusListener

KeyListener
KeyListener

WindowStateListener
WindowStateListener

Interfaces que deben implementar los oyentes

III.4

Registro de Oyentes

Registro de Oyentes
import java.awt.*;
import java.awt.event.*;
public class EBotonEvento extends Frame{
int tipoCara;

Objetos
origen de
Eventos

public EBotonEvento(){
super("Manejo Simple de Eventos");
Objetos
setSize(300,300);
oyentes de
setLayout(new FlowLayout());
setBackground(Color.GRAY);
Eventos
tipoCara=0;
Button boton1 = new Button("Carita Feliz");
Button boton2 = new Button("Carita Triste");
AccionBoton aBoton1 = new AccionBoton(1);
AccionBoton aBoton2 = new AccionBoton(2);
add(boton1);
Registro de
add(boton2);
boton1.addActionListener(aBoton1);
oyentes
boton2.addActionListener(aBoton2);
setVisible(true);
}

Registro de Oyentes
Oyente de eventos

Origen de eventos
El objeto boton1
registra al oyente
aBoton1 usando el
mtodo
addActionListener()
boton1

aBoton1

El nico evento que puede generar un botn es


de la clase ActionEvent

Registro de Oyentes
La forma de registrar objetos oyentes es similar
para cualquier tipo de evento:

objetoOrigen.addEventoListener(objetoOyente);

Aqu se indica el tipo de Evento

Clase del Oyente


La clase del
public void paint(Graphics g){...}
oyente
public static void main(String[] args) {...} implementa
ActionListener
class AccionBoton implements ActionListener {
private int elValor;
public AccionBoton(int valor){
elValor = valor;
}
public void actionPerformed(ActionEvent e){
tipoCara = elValor;
repaint();
}
}
}
ActionListener declara el mtodo

actionPerformed, que se ejecuta cuando se


genera un ActionEvent

Eventos de Botones

Generador de Eventos

Button

Evento Generado

ActionEvent

Interfaz del Oyente

ActionListener

Mtodos implementados

ActionPerformed()

Un botn solo genera eventos


de la clase ActionEvent

III.4

Otras Formas
de Oyentes

Ventana como oyente


Cualquier
objeto puede
ser un oyente

public class EBotonEvento1 extends Frame


implements ActionListener{
int tipoCara;
Button boton1,boton2;
La ventana es
public EBotonEvento1(){
...

el oyente

boton1 = new Button("Carita Feliz");


boton2 = new Button("Carita Triste");
add(boton1);
add(boton2);
boton1.addActionListener(this);
boton2.addActionListener(this);
setVisible(true);
}
...

Se registra la
ventana como
oyente

Generador y Oyente
La ventana es
...
el oyente

public void paint(Graphics g){...}


public static void main(String[] args)
{...}

public void actionPerformed(ActionEvent e){


if(e.getSource() == boton1)
tipoCara = 1;
else
tipoCara = 2;
repaint();
}
}

getSource indica que


objeto gener el Evento

Oyente annimo
...
public class EBotonEvento2 extends Frame {
...
Se registra un
public EBotonEvento2(){
oyente creando un
...
boton1 = new Button("Carita Feliz"); objeto de la interfaz
ActionListener
...
boton1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tipoCara = 1;
repaint();
}
});
...
}

Se puede registrar un
oyente annimo

III.4

Eventos
de Ventana

Eventos de Ventanas
Generador de Eventos

Frame, Dialog

Evento Generado

WindowEvent

Interfaz del Oyente

WindowListener

Mtodos implementados

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

Una Ventana solo genera eventos de la


clase WindowEvent

Registro de Oyente
import java.awt.*;
import java.awt.event.*;
public class EVentanaEvento extends Frame {
...
public EVentanaEvento(){
...
AccionVentana aVentanaEvento = new AccionVentana();
addWindowListener(aVentanaEvento);
...
}

Registro de
oyente

Objeto
oyente

Clase del Oyente


private class AccionVentana implements WindowListener {
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void windowOpened(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
}
}

La clase oyente debe implementar todos


los mtodos de la interfaz
WindowListener, aunque no los use.

III.4

Clases Adaptadoras

Clase Adaptadora
Es muy tedioso implementar interfaces
si solo se ocuparn pocos mtodos

Java proporciona clases


adaptadoras que ya implementaron
todos los mtodos de las interfaces

Para usarlas deben heredar a la clase


oyente

Oyente heredando un Adaptador


private class AccionVentana extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
}

La clase oyente entonces hereda la


clase adaptadora para el evento

WindowAdapter es la clase adaptadora


para WindowEvent

Oyente annimo
import java.awt.*;
import java.awt.event.*;
public class EVentanaEvento extends Frame {
...
public EVentanaEvento(){
...
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
show();
}
...
}

Se puede crear un oyente annimo


utilizando la clase adaptadora

III.4

Eventos
de Teclado

Eventos de Teclado
Generador de Eventos

Componente

Evento Generado

KeyEvent

Interfaz del Oyente

KeyListener

Clase Adaptadora

KeyAdapter

Mtodos implementados

keyPressed()
keyReleased()
keyTyped()

Las teclas solo genera eventos de


la clase KeyEvent

Eventos de Teclado
Un objeto KeyEvent tiene los siguientes miembros:
VK_F1,...
VK_1,...
VK_A,...
VK_UP,...

Variable esttica que define


cada tecla

getKeyCode() Devuelve el valor de la


tecla utilizada

Registro de Oyente
import java.awt.*;
import java.awt.event.*;
public class ETeclaEvento extends Frame {
...
public ETeclaEvento(){
...
addKeyListener(new AccionTecla());
...
}

Registro de
oyente

public void paint(Graphics g){...}


public static void main(String[] args) {...}

Clase del Oyente


private class AccionTecla extends KeyAdapter{
public void keyPressed(KeyEvent e){
int codigoTecla = e.getKeyCode();
switch(codigoTecla){
case KeyEvent.VK_UP:
iY-=5; break;
case KeyEvent.VK_DOWN: iY+=5; break;
case KeyEvent.VK_LEFT: iX-=5; break;
case KeyEvent.VK_RIGHT: iX+=5;
}
repaint();
}
}
}

La clase oyente usa getKeyCode() para


identificar a la tecla utilizada.

III.4

Eventos
de Ratn

Eventos de Ratn
Generador de Eventos

Componente

Evento Generado

MouseEvent

Interfaz del Oyente

MouseListener
MouseMotionListener

Clase Adaptadora

MouseAdapter
MouseMotionAdapter

Mtodos implementados

mouseDragged()
mouseMoved()
mousePressed()
mouseReleased()
mouseClicked()

El ratn solo genera eventos de la


clase MouseEvent

Mtodos del Oyente


Las interfaces para oyentes de eventos de un ratn tienen
los siguientes mtodos:
mousePressed()
mouseReleased()
mouseClicked()

Cuando se pulsa un botn del ratn


Cuando se libera el botn del ratn
Cuando se da un click

mouseDragged()

Cuando se mueve el ratn con un


botn pulsado
Cuando se mueve el ratn

mouseMoved()

Registro de Oyente
import java.awt.*;
import java.awt.event.*;
public class ERatonEvento extends Frame {
Oyente de
...
public ERatonEvento(){
pulsacin
...
addMouseListener(new AccionBoton());
addMouseMotionListener(new MovimientoBoton());
...
}
Oyente de
public void paint(Graphics g){...}

movimiento

public static void main(String[] args) {...}

Clases del Oyente


private class AccionBoton extends MouseAdapter {
public void mousePressed(MouseEvent e){
bPulsado=true;
iX=e.getX();
iY=e.getY();
repaint();
}
public void mouseReleased(MouseEvent e){
bPulsado=false;
repaint();
}
}

Con getX() y getY() se obtiene la


posicin del ratn en el momento de
generar el evento

Oyentes para cualquier


Componente Swing
Component listener


Escucha cambios en el tamao, posicin o


visibilidad de los Componentes

focus listener


Escucha cuando el componente adquiri o


perdi el foco del teclado (o sea que se
puede introducir texto en l)

Oyentes para cualquier


Componente Swing
key listener
Escucha cuando se oprime cualquier tecla
del teclado. El componente debe estar
activo (tener el foco)

mouse listener
Escucha clicks del mouse (sumir y soltar el
botn) y movimiento afuera y adentro del
rea del componente.

Oyentes para cualquier


Componente Swing
mouse-motion listener
Escucha cambios en la posicin del cursor
sobre el componente

mouse-wheel listener
Escucha el movimiento de la rueda del
mouse sobre el componente

Otros Oyentes
Para saber que tipo de eventos puede
generar un componente slo hay que ver la
documentacin de los mtodos.
Por ejemplo: JComboBox tiene los siguientes
mtodos para registrar oyentes:




addActionListener
addItemListener
addPopupMenuListener

También podría gustarte