Comment mettre à jour proprement une IHM relative à un traitement.

Comment mettre à jour proprement une IHM relative à un traitement. - Java - Programmation

Marsh Posté le 19-05-2004 à 14:37:03    

Bonjour,
 
J'ai un prog sous la main et je doit discocier proprement ce qui est IHM et les opérations de traitement.
 
c'est a dire que j'ai une opération qui dure pas mal de temps avec un certain nombre de "tour", et normalement mon IHM doit présenter une interface qui représente les résulats au fur et à mesure qu'ils arrivent.
 
Pour l'instant c'est cracra, avec une fonction qui fait du swing au milieu des traitements.
 
Il existe dans le logiciel pour un autre traitement une méthode qui consiste avec un thread d'allé voir toutes les n secondes si les tableaux de résultat n'ont pas bougé.
 
je trouve ça un peu lourd et je cherche a savoir si il n'existe pas une façon plus "propre" de faire cela
 
merci  :hello:

Reply

Marsh Posté le 19-05-2004 à 14:37:03   

Reply

Marsh Posté le 19-05-2004 à 14:41:18    

bah, tu écris une interface AvancementListener, qui définit une méthode "LeTraitementAAvance(Avancement x);"
 
Ensuite, tu fait implémenter cette interface à la classe de l'IHM qui doit afficher l'avancement.
 
Et tu ajoutes dans la classe qui fait le treaitement, et qui est capable de dire quand il a avancé, une liste de Listeners, une méthode addAvancementListener(AvancementListener al);
removeAvancementListener(AvancementListener al)...
 
Quand le traitement avance d'un tour, par exemple, ty appelles leTraitementAAvance sur tous les listeners de la liste, et hop, ton ihm est prévenue.

Reply

Marsh Posté le 19-05-2004 à 15:38:00    

en oubliant pas d'appeller leTraitmentAvance() dans un SwinUtilities.invokeLater().


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 19-05-2004 à 15:43:57    

nraynaud a écrit :

en oubliant pas d'appeller leTraitmentAvance() dans un SwinUtilities.invokeLater().


 
Ah tiens, pkoi? J'avoue que je me suis jamais trop penché sur ce genre de choses..

Reply

Marsh Posté le 19-05-2004 à 15:46:07    

uhm uhm je me suis jamais penché sur l'écriture d'un listener  [:meganne]  
 
c'en encore un peu flou dans ma tete, je vais y réfléchir, merci pour la piste

Reply

Marsh Posté le 19-05-2004 à 15:46:45    

heu ça fait 3 fois que j'en parle en 2 jours, ça devient lourd :
http://java.sun.com/products/jfc/t [...] eads3.html


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 19-05-2004 à 15:47:56    

nraynaud a écrit :

en oubliant pas d'appeller leTraitmentAvance() dans un SwinUtilities.invokeLater().

Ca serait pas plus correct de mettre le SwingUtilities.invokeLater() dans le code de leTraitementAvance() qui modifie l'interface ? Parce que tous les listeners ne font pas forcement du swing...

Reply

Marsh Posté le 19-05-2004 à 15:52:06    

R3g a écrit :

Ca serait pas plus correct de mettre le SwingUtilities.invokeLater() dans le code de leTraitementAvance() qui modifie l'interface ? Parce que tous les listeners ne font pas forcement du swing...

si, mais la flemme d'expliquer ça comme ça et s'il le fait autour de l'autre, ça sera déjà un grand pas.
 
 
Perso, je fais des adaptateurs swing dans certains cas. Et je suis obligé de d'avoir un modèle en "ombre" : un vrai modèle qui tourne à la vitesse du réseau ou de ce qu'il veut et un modèle spécial swing qui est listener retardé du premier. Avant de faire ça, il m'a fallut 2 semaines pour trouver un bug alacon.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 19-05-2004 à 15:52:50    

nraynaud : sorry, j'ai pas lu tous les topics....Et comme j'ai pas fait de swig+threads depuis ma dernière année d'école (mon dieu, tout ce temps, déjà! :D) ben voilà, quoi. En AWT,le problème ne se pose pas.
 
Edit ; je dis des conneries : je me suis jamais posé la question, parce que je n'ai jamais eu le problème : je n'attendait pas des données du réseau : elles arrivaient (c'était des messages de chat), donc, je devait les afficher au moment de leur arrivée => ke problème ne se pose pas!
 
Chuis pas malin! :D


Message édité par gfive le 19-05-2004 à 16:04:13
Reply

Marsh Posté le 19-05-2004 à 16:07:07    

juste pour préciser, je cherche pas a faire une progressbar ou autre, c'est vraiment des infos contennue dans des structures de données que je doi afficher, mettre a jour des jtable, des courbes etc...

Reply

Marsh Posté le 19-05-2004 à 16:07:07   

Reply

Marsh Posté le 19-05-2004 à 16:15:16    

EpoK a écrit :

juste pour préciser, je cherche pas a faire une progressbar ou autre, c'est vraiment des infos contennue dans des structures de données que je doi afficher, mettre a jour des jtable, des courbes etc...

oui oui, il faut bien protéger ton code de modification de l'interface.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 19-05-2004 à 16:17:35    

nraynaud a écrit :

oui oui, il faut bien protéger ton code de modification de l'interface.


 
si t'as le tps de donner plus de détails n'hésite pas  [:meganne]

Reply

Marsh Posté le 19-05-2004 à 16:24:06    

EpoK a écrit :

si t'as le tps de donner plus de détails n'hésite pas  [:meganne]


nraynaud a écrit :

heu ça fait 3 fois que j'en parle en 2 jours, ça devient lourd :
http://java.sun.com/products/jfc/t [...] eads3.html


http://java.sun.com/docs/books/tut [...] reads.html


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 19-05-2004 à 16:24:52    

euhhh j'aurais une question (au fait je suis novice sur ce forum) : J'ai développé une IHM et j'aimerais dissocier la partie interface graphique pure des methodes de connexion, déconnexion et d'évènements sur les boutons! Il parait qu'il faut créer chaque panel de la frame et les instancier dans la classe principale mais chez moi ca ne marche po...J'ai du zapper une étape ?!?!?!?!?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed