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() :
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.
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; } }
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.
Partager