2010-11-26 5 views
2

Le scénario est le suivant: J'ai une application Java swing avec JFrame. Il y a une zone de texte où vous pouvez taper des choses, puis vous obtenez les résultats de la recherche dans une autre zone de texte et lorsque vous sélectionnez l'un des résultats, il y a un bouton "Télécharger". Et voici le problème. Lorsque vous cliquez sur "Télécharger", l'application doit afficher des informations sur la complétude des fichiers téléchargés. Je fais cela avec un thread prolongeant la classe appelé DownloadManager qui met à jour les informations sur une période de temps. Cependant, je crains qu'il puisse y avoir des problèmes de synchronisation. Existe-t-il un moyen standard de mettre à jour ces informations dynamiques sans threads? Y at-il une boucle principale ou quelque chose comme ça dans les classes swing Java. Comment faites-vous?Quel est le meilleur - threads principaux ou séparés?

Répondre

2

Tout ce qui met à jour l'interface graphique en Java doit être effectué par le thread d'envoi d'événement GUI. Pour forcer l'exécution d'une méthode dans ce thread, vous devez utiliser SwingUtilities.invokeLater. Faire quoi que ce soit d'autre pourrait potentiellement faire que votre interface graphique se bloque, ne se mette pas à jour, ou autre étrangeté!

Ceci est un bon tutoriel qui décrit mieux que moi:

http://www.javamex.com/tutorials/threads/invokelater.shtml

2

Non il n'y a pas de problèmes tant avec synchronisation. Si vous travaillez avec des threads d'arrière-plan dans Swing, utilisez un SwingWorker.

Questions connexes