Bonjour,

J'ai implémenté un swingworker pour pouvoir mettre a jour une JProgressbar. Cependant, j'ai l'impression que la méthode done() est appelée beaucoup trop tôt. Ci-dessous, le code de doInBackground() :

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
40
41
42
43
44
45
46
47
48
49
50
51
 @Override
public Integer doInBackground() {
     return writeEnrichmentResults();
}
 
public int writeEnrichmentResults()
{
	String line;
	String[] results;
 
 
         // Fichier ou sont les regles
	String adressedufichier = "../../Fast_Enricher/resultats.txt";
	File file = new File(adressedufichier);
 
	long fileSize = file.length();	// Taille totale du fichier
	long currentSize = 0;			// Taille lue du fichier
	try 
	{
	        Scanner scanner=new Scanner(file);
 
    		while (scanner.hasNextLine()) 
    		{
    		         line = scanner.nextLine();
    		        results = line.split(":");
 
    		        for(int i = 1; i<results.length-2;i++)
    			{
    			       System.out.println(i);
                               uneBD.writeEnriched(results[0],
                                                   results[i],
                                                   Double.valueOf(results[results.length-2]),
                                                 Double.valueOf(results[results.length-1]));
    		        }
    			currentSize+=line.getBytes().length;
    			setProgress((int)((currentSize *100)/fileSize));
    		}
 
    		file.delete();
    		scanner.close();
    		System.out.println("Effacement du fichier : "+file.delete());
    		return (int)currentSize;
 
        }
	catch(IOException e)
	{
	    	System.out.println("/!\\ writeEnrichmentResults : Probleme a l ecriture sur le fichier /!\\");
	    	e.printStackTrace();
	    	return (int)currentSize;
	 }
}
La méthode "writeEnriched" fait partie d'une autre classe. C'est lors de son appel que done() est appelée. Est-il alors interdit d'utiliser des méthodes qui ne sont pas définies dans un swingworker ? Ce qui est bizarre c'est que lors des premiers tests il n'y avait aucun problème, et entre deux j'ai bossé sur autre chose et quand j'ai voulu réessayé, plus rien ne fonctionnait.
Je me demandais aussi s'il était poossible de choisir par nous même à quel moment appeler done ().

Merci d'avance.

Bonne fin d'après-midi.