Pessoal , boa tarde.
Não estou achando nada que de alguma dica de como criar “ouvites” p/ os meus objetos.
O cenário é o seguinte:
Tenho um obeto que irá realizar qualquer tarefa, e ele deve informar ao seu “criador” oq ele está fazendo, ou seja, assim como um botão dispara um evento sempre que ele é “clicado” meu objeto irá disparar um evento em determinadas condições.
A questão é : Como realizar o disparo de um evento informando quem o disparou juntamente com uma msg texto.
Alguem poderia me ajudar ?
Obrigado a todos.
[]s
Basta criar na sua classe que dispara eventos um List, um método como fireEvento(argumentos) e métodos para adicionar e remover listeners.
No método fireEvento, o List será percorrido e cada um dos ouvintes será notificado (a interface Ouvinte deve definir um método específico que as suas implementações deverão tratar, como o ActionListener tem o actionPerformed()).
Na classe que implementa Ouvinte, dentro do método definido na interface você faz o que for necessário.
Será que ajudou ou piorou tudo? Acho que tenho um exemplo, daqui a pouco eu posto.
Achei. É um ColisionListener. Veja:
Interface que define o Listener:
package org.j2dgameengine.event;
public interface CollisionListener {
void collisionHappened(CollisionEvent e);
}
Classe que define o Evento:
package org.j2dgameengine.event;
import org.j2dgameengine.sprite.Sprite;
public class CollisionEvent {
private Sprite sprite1;
private Sprite sprite2;
public CollisionEvent(Sprite sprite1, Sprite sprite2) {
this.sprite1 = sprite1;
this.sprite2 = sprite2;
}
public Sprite getSprite1() {
return sprite1;
}
public Sprite getSprite2() {
return sprite2;
}
}
Uso:
private List<CollisionListener> collisionListeners;
//.....
collisionListeners = new ArrayList<CollisionListener>();
// quando um evento ocorre:
private void fireCollisionHappened(Sprite collider) {
// notifies all listeners about a collision
for (CollisionListener listener : collisionListeners) {
listener.collisionHappened(new CollisionEvent(this, collider));
}
}
Marco, obrigado.
Consegui fazer com que minha classe consiga disparar eventos.
[]s
[quote=anderson.rossi]Pessoal , boa tarde.
Não estou achando nada que de alguma dica de como criar “ouvites” p/ os meus objetos.
O cenário é o seguinte:
Tenho um obeto que irá realizar qualquer tarefa, e ele deve informar ao seu “criador” oq ele está fazendo, ou seja, assim como um botão dispara um evento sempre que ele é “clicado” meu objeto irá disparar um evento em determinadas condições.
A questão é : Como realizar o disparo de um evento informando quem o disparou juntamente com uma msg texto.
[/quote]
vc simplesmente itera a lista de observaodres e invoka o método correspondente ao evento.
Leia isto http://www.javabuilding.com/workshop/disparando-eventos-com-observer-proxy-e-generics.html.
É um pouco mais do que quer , mas tem a explicação de como se implementa o mecanismo do observer.