Salut !
Lorsqu'on travail avec swing, il faut mettre en tête qu'il y a trois Thread différents qui se lance:
1) main application thread : il se charge de lancer la méthode principale main()
2) toolkit thread : il se charge de recevoir les événements du système d'exploitation, par exemple un clic de souris, et de les transmettre au dernier thread.
3) EDT (event dispatching thread) : Ce dernier est extrêmement important car il répartit les événements reçus vers les composants concernés et se charge d'invoquer les méthodes d'affichage.
Ce que tu dois faire est le suivant :
met tout code que tu juge qui va consommer du temps dans un thread séparé, je te conseil de le mettre dans le code suivant :
1 2 3 4 5 6 7 8
|
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// ton code ici
}
}); |
parce ton problème vient du fait que le thread principal attend la fin de l'exécution de ta commande, ce qui fige ton application, mis en mettant le code exécutant tes scripts à l'intérieur du code ci-dessus, qui va créer un nouveau Thread pour toi et de le lancer automatiquement, alors ton application travaillera tranquillement alors que le Thread créer aura tout le temps afin de faire ce qu'il a à faire.
Bon courage
Partager