-
Swing et les threads
Bonjour,
J'ai une frame dans la quelle j'ai un tableau, des listes un progressbar des labels et tout et tout, la class de cette frame comporte une méthode lourde, normalement les jlists les jtables, le progress bar les labels changent au fur et a mesure que la méthode évolue, tout le monde a deviné que me frame se fige jusqu'à le fin du traitement, alors voila ce que j'ai fait:
j'ai crée une class implements runnable et dans le constructeur j'ai placé tout les éléments qui doivent changer dynamiquement, à savoir, le progress bar la table, les listes et les labels, dans la méthode RUN j'ai placé tout le traitement lourd, et dans ma frame j'ai fait
Code:
new Thread(traitementlourd).start()
Le truc c'est que ça marche comme je voulais, mais je ne sais pas si finalement je programme comme un pied ou c'est comme ça qu'il faut faire ...
merci.
-
Peut être pourrais-tu regarder le SwingWorker ?
Avec par exemple SwingWorker (Java SE 6) et / ou Worker Threads and SwingWorker.
-
oui mais si non.... est-ce que c'est bon, si je ne veux pas passé par le Swingworker ?
-
Au niveau de ce que tu décris il y a des chances pour que ce soit bon.
Le problème, peut être, est de savoir ce qui se passe lorsque les composants swings lisent les valeurs remplies par le traitement long, et inversement, lorsque ce traitement long modiefie des valeurs de composants swing.
Est-ce que, à chaque fois, tu repères et protèges bien les accés concurrents, et fais gaffe à intervenir sur le event dispatching thread pour swing ?