Salut,

Envoyé par
firgon
J'ai pas le sentiment que mes traitements soient "lourds", on est de l'ordre du setvisible() ou de la gestion de selection.
Question : que fait ton application ?
Car d'après ce que tu dis elle se contente de mettre à jour l'interface sans rien faire derrière !? 

Envoyé par
firgon
Ce qui me gène plus, c'est que d'après le ressenti des utilisateurs, c'est pas vraiment une appli qui se fige, on dirait plutôt que mes listeners "n'entendent pas" tous les clics ou au moins les premiers clics, hors j'ai aucun traitement de fond par ailleurs.
Cela me fait quand même fortement penser à un blocage de l'EDT : les événements sont bien reçus et mis en pile mais ils ne sont pas traité de suite car l'EDT est bloqué...
Question : ce ressenti des utilisateurs, tu le ressens toi aussi ???
Ce que tu peux faire, c'est d'insérer dans ton application un JLabel avec un GIF animé en boucle (perso j'aime bien celui-ci : duke.running.gif) : si l'animation se fige c'est que l'EDT est bloqué 
A noter que le problème pourrait également venir des méthodes paint()/paintComponent() si tu les as redéfinies...
Ce que tu peux faire également pour le debug c'est de définir un EventQueue personnalisé qui afficherait les évènements trop long :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class DebugEventQueue extends EventQueue {
@Override
protected void dispatchEvent(AWTEvent event) {
long time = System.currentTimeMillis();
super.dispatchEvent(event);
time = System.currentTimeMillis() - time;
if (time>250) {
System.err.println("dispatchEvent trop long : " + time + " ms !");
System.err.println("Event : " + event);
}
}
} |
Qui s'installe comme ceci au début de l'application :
Toolkit.getDefaultToolkit().getSystemEventQueue().push(new DebugEventQueue());
Ceci va t'afficher tous les évènements qui prennent plus de 250ms à être traités...

Envoyé par
firgon
Tiens une question au passage, est-ce qu'il peut y avoir ralentissement parce qu'un trop grand nombre de listener est actif en même temps.
Je ne pense pas... à moins que tu ne mettes un très grand nombre de listener sur le même événement du même composant...

Envoyé par
firgon
Chacun des objets affichés s'écoute lui même et peut réagir au clic, est-ce que ça peut généré des ralentissement ou une quelconque dégradation de performance ? Est-ce que j'ai intéret à regrouper mes écouteurs dans une seule et même classe, même pour des objets qui n'ont rien à voir?
Non cela me semble tout à fait correct comme cela...
Mais j'en reviens aux traitements de ces listeners : ils se contentent tous de mettre à jour l'affichage ? Tu n'as aucun traitement métier ???
a++
Partager