Thread, Jframe et process
Bonjour,
J'ai pas vraiment un problème, mais le Look And Feel Substance me plante ma barre de progression :
Code:
org.pushingpixels.substance.api.UiThreadingViolationException: Component creation must be done on Event Dispatch Thread
D'après certains sites, c'est un problème connu du à une mauvaise utilisation des thread.
J'explique mon code en essayant d'être clair:
J'ai au clic sur un bouton :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
// Fenêtre avec barre de progression
ProgressFrame progress = new ProgressFrame();
Thread threadProgress = new Thread(new ProgressFrameRunnable(progress));
// Traitement
Process process = new Process(this, progress, imgLbl, nomPhotoTxtFd.getText(), largeurTxfld.getText());
Thread threadProcess = new Thread(new ProcessRunnable(process));
// Démarrage des Threads
threadProgress.start();
threadProcess.start(); |
J'ai une ProgressFrame qui hérite de JFrame.
Cette progressFrame qui est appelée avec la classe ProcessRunnable qui implemente Runnable dans un thread threadProgress
Même méthode pour process, qui est issue de la classe Process qui contient ma boucle de traitement.
Dans cette boucle, à chaque passe, j'appelle la méthode setProgressBar de l'objet ProgressFrame que j'ai mis en paramètre du constructeur Process().
Code:
1 2
|
this.progress.setProgressBar(cpt, this.FinalValue); |
cpt est le compteur de chaque passe, et FinalValue le nombre de passe à effectuer.
Je pense que c'est une très mauvaise méthode et j'aimerais si possible avoir des pistes sur une meilleure façon de procéder...