Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4/17/2002
Cada evento est representado por un objeto que ofrece informacin sobre el evento e identifica la fuente. Las fuentes de los eventos normalmente son componentes, pero otros tipos de objetos tambin pueden ser fuente de eventos. Como muestra la siguiente figura, cada fuente de evento puede tener varios oyentes registrados. Inversamente, un slo oyente puede registrarse con varias fuentes de eventos.
event event object /----> event listener source ---------------------------> event listener \----> event listener Descripcin: Mltiples oyentes pueden ser registrados para ser notificados de eventos de un tipo particular sobre una fuente particular. PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
17/04/2002
2. 3.
Un escenario de manejo de eventos tpico ocurre con los botones (JButton). Para detectar cuando el usuario pulsa un botn de la pantalla (o pulsa la tecla equivalente), un programa debe tener un objeto que implementa el interfase ActionListener. El programa debe registrar este objeto como un oyente de accin del botn (la fuente del evento), usando el mtodo addActionListener. Cuando el usuario pulsa el botn de la pantalla, ste dispara el evento action, Esto resulta en una llamada al mtodo actionPerformed del oyente de action, el nico mtodo del interfase ActionListener). El nico argumento del mtodo es un objeto ActionEvent que ofrece informacin sobre el evento y su fuente.
ActionEvent button ----------------------------> action listener
Descripcin: Cuando el usuario pulsa un botn, los oyentes de action del botn son notificados.
Los manejadores de eventos pueden ser instancias de cualquier clase. Frecuentemente, se implementan usando clases internas annimas, lo que puede hacer el cdigo algo ms confuso -- hasta que hayas usado las clases internas. En el nuevo modelo de eventos cada elemento de la interfase grfica puede iniciar o disparar un evento representados por objetos. Estos eventos se capturan por interfaces que atienden y procesan el evento. De esta forma la fuente y el destino de los eventos quedan separados. Cada objeto que atiende a los eventos tiene una interfase especfica, estos objetos primero tienen que ser registrados mediante el mtodo addXXXListener( ) del componente que lanza los eventos, en esta interfase XXX representa el evento que se quiere lanzar. Por ejemplo:
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
Las clases B1 y B2 son clases internas que implementan solamente el interfase ActionListener que a su vez solo implementa el mtodo ActionPerformed().
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
Como cada componente solo soporta un tipo especfico de evento la siguiente tabla lo resume:
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
Entonces para cada oyente que tenga definidos varios mtodos existe una clase con los mismos mtodos que se puede utilizar mediante la herencia e implementar solamente aquellos mtodos de inters. A continuacin se vern varios ejemplos:
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
Puedes encontrar el programa completo en Beeper.java. Aqu est el cdigo que implementa el manejo de eventos del botn:
public class Beeper ... implements ActionListener { ... //where initialization occurs: button.addActionListener(this); ... public void actionPerformed(ActionEvent e) { ...//Make a beep sound... } }
La clase Beeper implementa el interface ActionListener, que contiene un mtodo: actionPerformed. Como Beeper implementa ActionListener, un objeto Beeper puede registrar un oyente para los eventos action que genere el botn. Una vez que Beeper ha sido registrado usando el mtodo addActionListener de Button, cada que se pulse el botn se llamar al mtodo actionPerformed de Beeper.
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
10
En el cdigo anterior, tanto MultiListener como Eavesdropper implementan el interface ActionListener y se registran cmo oyentes de action usando el mtodo addActionListener de JButton. Las implementaciones que ambas clases hacen del mtodo actionPerformed son similares: simplemente aaden el action command del evento al rea de texto.
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
11
Puedes encontrar el programa completo en MouseEventDemo.java y BlankArea.java. Aqu slo tenemos el cdigo que implementa el manejo de eventos:
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
12
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
13
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
14
17/04/2002
PROFESOR: PROFESOR: Juan Juan Jos Jos Cabana Cabana Gonzlez Gonzlez (( juan.cabana@ieee.org juan.cabana@ieee.org ))
15