Bonjour,
Je suis sur un problème depuis plusieurs jours, et après avoir essayer plusieurs méthodes qui marchent mais ne me satisfassent pas entièrement, je me tourne vers vous !
Mon but : avoir une classe qui étends JFrame, qui contiennent une JProgressBar et un JTextArea et surtout, surtout, qui soit réutilisable !
Ce que j'ai fait :
- une classe qui créé ma Jframe et qui contient des méthodes de setTitle, setTxtAppend pour mettre à jour le JTxtArea, setProgress pour mettre à jour la JProgressBar ... etc.
- une action (boucle) lancée depuis l'EDT qui met à jour la JProgressBar selon la méthode définie ci-dessus.
Avant ce que je faisais, c'était un update(getGraphics) sur ma JFrame pour mettre à jour la progressbar, ce qui marchait très bien, jusqu' à ce que je m'aperçoive que ça me rallongeai considérablement mon temps de traitement.
J'ai donc essayé le SwingWorker, qui est génial mais qui ne me sert à rien puisque de toute manière je dois attendre la fin de mon traitement pour continuer. J'ai essayé des SwingUtilities.invokelater dans tous les sens, même des invokenadwait, mais rien n'y fait : pas de mise à jour.
En fait, j'obtiens ce que je veux en faisant un progressbar.update(progressbar.getGraphics) mais le résultat est un peu "sale" : la barre clignote et ce n'est pas beau du tout (évidemment car en fait dans ce cas j'update la barre à chaque itérations)
Donc ce que je ne comprends pas, c'est que je mets bien à jour ma progressbar dans l'edt puisque j'y suis (test à l'appui), mais la barre ne se mets pas à jour, et je suis obligé de passer par un update(getGraphics) soit de la barre, soit de la frame qui contient la barre ( d'ailleurs c'est idem pour le panel qui contient la barre ! où l JRootPane qui contient le panel qui contient ... bref, vous avez compris
)
Partager