Non si tu remplaces tout le thread par un invokeLater() cela n'a plus aucun intérêt car tout ton traitement sera exécuté dans l'
EDT et donc cela bloquera l'affichage.
Tu dois juste utiliser
invokeLater() pour modifier le modèle.
Ainsi ton thread se charge de tous les calculs, et lorsque il a besoin de modifier le modèle il utilisera
invokeLater() pour le faire (ou
invokeAndWait() s'il a besoin d'attendre la fin du traitement).
Le plus simple serait de te faire une série de méthode qui effecuerons la tâche dans l'EDT, par exemple :
1 2 3 4 5 6 7
| public void removeFromModel(final int index) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
monModel.remove(index);
}
});
} |
a++
Partager