OVH Cloud OVH Cloud

Creer son propre event

2 réponses
Avatar
daniel
Bonjour,

J'ai une classe qui recupere par la RS232 des données et les range dans
un buffer.
Comment creer mon propre event pour signaler que les données attendues
sont bien arrivées ?

merci d'avance

2 réponses

Avatar
MERIGON Olivier
Il faut suffit de faire un systeme de event/listener. Voila un exemple sur
un petit simulateur d'architecture de composants que j'avais fait . On
ecoutait la "ParteControle" qui change apres chaque top horloge. la fonction
"fireMicroPcChangeEvent()" notifie les écouteurs. Pour être notifié on
s'enregistre avec "addMicroPcChangeListener()" avec comme paramètre un inner
class anonyme qui implémente "MicroPcChangeListener " comme ceci:


--------------------------------------------------------------------
partCont.addMicroPcChangeListener(
new MicroPcChangeListener() {
public void onChange(MicroPcChangeEvent evt) {
repaint();
}});


--------------------------------------------------------------------

package archi.event;
import java.util.*;


/**
* Une classe d'evenemnt de changement de microPc
* @author MERIGON Olivier
* @version 1.0
*/
public class MicroPcChangeEvent extends EventObject {
public MicroPcChangeEvent(Object source) {
super(source);
}
}

-------------------------------------------------------------------------

package archi.event;
import java.util.*;

/**
* Inteface pour définir le comportement associé aux évenements
* MicroPcChangeEvent.
* @author MERIGON Olivier
* @version 1.0
*/
public interface MicroPcChangeListener extends EventListener {
public void onChange(MicroPcChangeEvent evt);
}

------------------------------------------------------------------------

package archi;
import java.util.*;
import archi.composant.*;
import archi.event.*;

/**
* La partie controle d'une architecture.
* @author MERIGON Olivier
* @version 1.0
*/
public class PartieControle {

/** les ecouteurs du chemin de données */
private Vector listeners = null;

/**
* Envoie la micro instruction courante au chemin et passe
* au prochaine etat.
*/
public void topHorloge() {
setChanged();
updateMicroPc();
//microPc change...
fireMicroPcChangeEvent(new MicroPcChangeEvent(this));
}


/** renvoie le vecteur des Ecouteurs */
private Vector getListeners() {
if (listeners == null)
listeners = new Vector();
return listeners;
}

/** Envoie l'evenement au ecouteurs */
private void fireMicroPcChangeEvent(MicroPcChangeEvent evt) {
for(int i = 0; i < getListeners().size(); i++)
((MicroPcChangeListener)
getListeners().elementAt(i)).onChange(evt);
}


/** AJoute un ecouteur au chemin de données */
public void addMicroPcChangeListener(MicroPcChangeListener list) {
getListeners().addElement(list);
}

/** Enleve l'ecouteur au chemin de donnée */
public void removeMicroPcChangeListener (MicroPcChangeListener list)
{
getListeners().removeElement(list);
}

}



"daniel" a écrit dans le message de news:
4034f361$0$22403$
Bonjour,

J'ai une classe qui recupere par la RS232 des données et les range dans
un buffer.
Comment creer mon propre event pour signaler que les données attendues
sont bien arrivées ?

merci d'avance



Avatar
Mielmonster
salut,

tu peux regarder du cote du design pattern observateur

http://www.javaworld.com/javaworld/jw-03-2003/jw-0328-designpatterns.html?

a+

Yannick

"daniel" a écrit dans le message de
news:4034f361$0$22403$
Bonjour,

J'ai une classe qui recupere par la RS232 des données et les range dans
un buffer.
Comment creer mon propre event pour signaler que les données attendues
sont bien arrivées ?

merci d'avance