bonjour, dans ma classe Controleur, j'ai défini une méthode valider() qui est invoquée quand on veut valider les données saisies depuis x écrans (classes MonEcran1, MonEcran2 ...).

Elle lance un swingWorker, qui a une méthode Void doInBackGround() qui contient une méthode abstraite traitementLent(), laquelle est implémentée différemment selon les écrans.
Dans chaque écran, traitementLent() manipule des objets différents.
Et chaque écran implémente aussi une méthode miseAJourEdt(), exécutée depuis done() une fois traitementLent() terminé, et aura besoin de données calculées dans traitementLent().

Question : les objets calculés par traitementLent() doivent ils forcément être retournés par traitementLent() (+ ajout de get()) si je veux les utiliser dans le done() ? dans le cas MonEcran1, panel.add(graphe) plante parfois en null pointer.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Controleur{
   void valider(){
      new Worker(Void, Void).execute();
   }
}
 
public class Worker extends SwingWorker(Void,Void){
   @overide
   Void doInBackground(){
      traitementLent();
   }
   @overide
   Void done(){
      miseAJourEdt();
   }
}
 
public class MonEcran1 {
   jpanel Panel,JFreeChart graphe;
   @overide
   void traitementLent(){
      graphe = fabriqueGraphe();// traitement lent
   }
   @overide
   void miseAJourEdt(){
      panel.add(graphe);// traitement EDT
   }
}
public class MonEcran2 {
   ...
   @overide
   void traitementLent(){
      ...()// traitement lent
   }
   @overide
   void miseAJourEdt(){
      ...// traitement EDT
   }
}