Est-ce la méthode jtextarea.settext () tamponne?
Question
Je ne suis pas un développeur java, mais je dois écrire un petit applet pour télécharger le fichier via FTP (En fait, je suis un développeur web). Tout fonctionne très bien, sauf pour la façon dont les messages de rétroaction sont affichés. Permettez-moi de vous expliquer avec un exemple:
si je l'ai écrit sometingh comme ça, à l'intérieur d'une méthode (contrôlée par un événement click)
//....
myJpanel.setText("Connecting to remote server");
//actually, it's surrounded by try-catch statement
myFtpObject.connect(); //this is taken from a third part package
myJpanel.setText("Connected")
Quand je tente d'exécuter ce code, la connexion est établie (après que les fichiers de téléchargement I de connexion sans problème), mais à l'intérieur du JPanel
Il me semble que la méthode JPanel setText est tamponnées d'une certaine façon.
Comment puis-je afficher des messages en temps réel?
(j'ai essayé de faire System.out.println pour tester et il fonctionnait très bien!)
Merci
La solution
si je l'ai écrit sometingh comme l'intérieur d'une méthode (contrôlée par un événement click)
code exécuté dans un écouteur d'exécute événement sur l'EDT. Le problème est que la tâche longue course bloque Swing EDT. Ainsi, l'interface graphique ne devient jamais une chance de se repeindre.
Lisez la section du tutoriel Swing sur Concurrency plus d'informations et pour une solution. La solution de base est de créer un thread séparé pour la tâche à long en cours d'exécution.
Ceci est également la raison pour laquelle System.out.println (..) fonctionne, car il exécute sur un autre fil.