J'arrive à généer un événement depuis une classe, avec la méthode
habituelle des listeners, et une fonction notify qui va boucler sur la
liste des listeners et appeler la méthode correspondante sur chaque
listener :
private void notifySQLAlert(){
sqle = new SQLEvent (this, type, strmessage);
Vector vtemp = (Vector)SQLlisteners.clone();
for (int x = 0; x < vtemp.size(); x++){
SQLListener target = null;
target = (SQLListener)vtemp.elementAt(x);
target.SQLAlert(sqle);
}
}
}
(exemple vu sur http://www.devarticles.com/art/1/629/2)
sur toute les docs que j'ai trouvé, tout ceci est fait d'un seul coup,
sur le thread courant.
Est-ce que ça veut dire qu'un deuxième listener ne sera pas "prévenu" de
l'événement tant que le premier de la liste n'a pas fini sa méthode
SQLAlert() ?
N'est-ce pas plus mieux de faire :
private void notifySQLAlert(){
sqle = new SQLEvent (this, type, strmessage);
Vector vtemp = (Vector)SQLlisteners.clone();
for (int x = 0; x < vtemp.size(); x++){
SQLListener target = null;
target = (SQLListener)vtemp.elementAt(x);
new Thread(
new Runnable(){
public void run(){
target.SQLAlert(sqle);
}
}
).start();
}
}
}
Ce qui lancera un thread pour générer l'évenement sur chaque listener.
(évidemment c'est pas super léger comme traitement...)
N'est pas plus logique ? Plus correcte ?
Ou alors j'ai pas encore tout compris ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas Delsaux
Le 19.09 2003, "Christophe M." s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
J'arrive à généer un événement depuis une classe, avec la méthode habituelle des listeners, et une fonction notify qui va boucler sur la liste des listeners et appeler la méthode correspondante sur chaque listener :
Tout ça c'est bien joli (et, promis, je ne dirais rien sur le fait que tu
utilises ces saloperies ignominieuses de Vector), mais il existe dans Swing un thread spécifique pour traiter les événements. Les gérer à la main, en dehors de Swing, c'est une bonne idée, mais il faut le faire à la mode Swing, c'est-à-dire avec un thread dédié qui empile et dépile les événements, sinon, tu vas te battre comme un galérien. Fais donc un EventManager séparé, et ça ira beaucoup mieux.
-- Nicolas Delsaux "L'important n'est pas de se libérer du corps, mais de se libérer du mental. Ce n'est pas le corps qui nous empètre mais l' esprit." Thomas Merton - Journal d'Asie
Le 19.09 2003, "Christophe M." <mccricri@yahoo.com> s'est levé(e) et s'est
dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
J'arrive à généer un événement depuis une classe, avec la méthode
habituelle des listeners, et une fonction notify qui va boucler sur la
liste des listeners et appeler la méthode correspondante sur chaque
listener :
Tout ça c'est bien joli (et, promis, je ne dirais rien sur le fait que tu
utilises ces saloperies ignominieuses de Vector), mais il existe dans Swing
un thread spécifique pour traiter les événements. Les gérer à la main, en
dehors de Swing, c'est une bonne idée, mais il faut le faire à la mode
Swing, c'est-à-dire avec un thread dédié qui empile et dépile les
événements, sinon, tu vas te battre comme un galérien. Fais donc un
EventManager séparé, et ça ira beaucoup mieux.
--
Nicolas Delsaux
"L'important n'est pas de se libérer du corps, mais de se libérer du
mental. Ce n'est pas le corps qui nous empètre mais l' esprit."
Thomas Merton - Journal d'Asie
Le 19.09 2003, "Christophe M." s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
J'arrive à généer un événement depuis une classe, avec la méthode habituelle des listeners, et une fonction notify qui va boucler sur la liste des listeners et appeler la méthode correspondante sur chaque listener :
Tout ça c'est bien joli (et, promis, je ne dirais rien sur le fait que tu
utilises ces saloperies ignominieuses de Vector), mais il existe dans Swing un thread spécifique pour traiter les événements. Les gérer à la main, en dehors de Swing, c'est une bonne idée, mais il faut le faire à la mode Swing, c'est-à-dire avec un thread dédié qui empile et dépile les événements, sinon, tu vas te battre comme un galérien. Fais donc un EventManager séparé, et ça ira beaucoup mieux.
-- Nicolas Delsaux "L'important n'est pas de se libérer du corps, mais de se libérer du mental. Ce n'est pas le corps qui nous empètre mais l' esprit." Thomas Merton - Journal d'Asie
Christophe M.
Nicolas Delsaux wrote:
Le 19.09 2003, "Christophe M." s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
J'arrive à généer un événement depuis une classe, avec la méthode habituelle des listeners, et une fonction notify qui va boucler sur la liste des listeners et appeler la méthode correspondante sur chaque listener :
Tout ça c'est bien joli (et, promis, je ne dirais rien sur le fait que tu utilises ces saloperies ignominieuses de Vector), mais il existe dans Swing un thread spécifique pour traiter les événements. Les gérer à la main, en dehors de Swing, c'est une bonne idée, mais il faut le faire à la mode Swing, c'est-à-dire avec un thread dédié qui empile et dépile les événements, sinon, tu vas te battre comme un galérien. Fais donc un EventManager séparé, et ça ira beaucoup mieux.
Ben heureusement que tu dis rien, parce que c'est pas mon code, c'était un exemple trouvé sur internet ;-)
Donc, si je comprends bien, le mieux est d'utiliser EventQueue.invokeLater() ? Bon, comme tu l'as dis c'est pas une appli graphique, donc faut que je refasse cette classe, mais c'est bien ça l'idée ?
Nicolas Delsaux wrote:
Le 19.09 2003, "Christophe M." <mccricri@yahoo.com> s'est levé(e) et s'est
dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
J'arrive à généer un événement depuis une classe, avec la méthode
habituelle des listeners, et une fonction notify qui va boucler sur la
liste des listeners et appeler la méthode correspondante sur chaque
listener :
Tout ça c'est bien joli (et, promis, je ne dirais rien sur le fait que tu
utilises ces saloperies ignominieuses de Vector), mais il existe dans Swing
un thread spécifique pour traiter les événements. Les gérer à la main, en
dehors de Swing, c'est une bonne idée, mais il faut le faire à la mode
Swing, c'est-à-dire avec un thread dédié qui empile et dépile les
événements, sinon, tu vas te battre comme un galérien. Fais donc un
EventManager séparé, et ça ira beaucoup mieux.
Ben heureusement que tu dis rien, parce que c'est pas mon code, c'était
un exemple trouvé sur internet ;-)
Donc, si je comprends bien, le mieux est d'utiliser
EventQueue.invokeLater() ?
Bon, comme tu l'as dis c'est pas une appli graphique, donc faut que je
refasse cette classe, mais c'est bien ça l'idée ?
Le 19.09 2003, "Christophe M." s'est levé(e) et s'est dit "tiens, je vais écrire aux mecs de fr.comp.lang.java"
J'arrive à généer un événement depuis une classe, avec la méthode habituelle des listeners, et une fonction notify qui va boucler sur la liste des listeners et appeler la méthode correspondante sur chaque listener :
Tout ça c'est bien joli (et, promis, je ne dirais rien sur le fait que tu utilises ces saloperies ignominieuses de Vector), mais il existe dans Swing un thread spécifique pour traiter les événements. Les gérer à la main, en dehors de Swing, c'est une bonne idée, mais il faut le faire à la mode Swing, c'est-à-dire avec un thread dédié qui empile et dépile les événements, sinon, tu vas te battre comme un galérien. Fais donc un EventManager séparé, et ça ira beaucoup mieux.
Ben heureusement que tu dis rien, parce que c'est pas mon code, c'était un exemple trouvé sur internet ;-)
Donc, si je comprends bien, le mieux est d'utiliser EventQueue.invokeLater() ? Bon, comme tu l'as dis c'est pas une appli graphique, donc faut que je refasse cette classe, mais c'est bien ça l'idée ?