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
Jetez un oeil à SwingWorker:
http://download.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
Il peut y avoir de meilleures façons, mais c'est ce que je pour ma barre de progression lors du téléchargement de la mise à jour des choses et des barres de progression.
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:
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.
- 1. Quel est le meilleur BOOST_MPL_ASSERT ou BOOST_STATIC_ASSERT?
- 2. Quel est le meilleur: mysql_connect ou mysql_pconnect
- 3. Quel est le meilleur, ETL ou ELT?
- 4. Quel est le meilleur QTP ou Jmeter?
- 5. Quel est le meilleur H2 ou HSQLDB?
- 6. C++ ou C++ 0x - Quel est le meilleur standard?
- 7. mysql_fetch_object() ou mysql_fetch_array() quel est le meilleur et pourquoi?
- 8. Ajax traditionnel ou Jquery Ajax, quel est le meilleur?
- 9. Quel est le meilleur - (int) valeur ou valeur int?
- 10. Quel est le meilleur protocole TCP ou UDP?
- 11. Quel est le meilleur: SASS ou css dynamique avec aspx?
- 12. Quel est le meilleur outil .NET ORM: SubSonic ou WebWidgetry?
- 13. Quel est le meilleur à utiliser, ViewHelper ou Vue partielle?
- 14. Printemps + CXF ou Spring + Mule? Quel est le meilleur?
- 15. Quel est le meilleur Java + OpenGl ou C++ OpenGl?
- 16. Quel nom canonique est le meilleur? www ou non-www?
- 17. Quel est le meilleur pour cette requête, « jointure » ou « Où »
- 18. threads séparés dans l'application pygtk
- 19. quel est le meilleur en Java?
- 20. Quel est le meilleur dans GWT?
- 21. Quel cadre de validation est le meilleur?
- 22. Quel est le meilleur dans asp.net 2.0?
- 23. Quel outil opensource est le meilleur?
- 24. Django CMS quel est le meilleur?
- 25. Quel est le meilleur framework webservice java?
- 26. Quel est le meilleur blog de XNA?
- 27. Quel est le meilleur logiciel FTP gratuit?
- 28. Réponse, Résultat, Répondre, quel est le meilleur?
- 29. Quel serveur WAMP est le meilleur?
- 30. Quel est le meilleur analyseur PDR?