J'ai construit mon propre composant en étendant JPanel. J'ai ajouté quelques méthodes comme calculateWhatever() ... Devrais-je appeler ces méthodes avec invokeLater() aussi? Substance L & F ne s'en plaint pas mais j'ai de rares problèmes de peinture au hasard et je me demande s'ils se produisent à cause de ces calculs à l'intérieur de la composante d'élongation prolongée.Utilisation du composant Swing étendu, doute de thread
Répondre
Si vous effectuez un grand nombre de calculs, il est prudent de les exécuter dans un thread autre que le thread d'envoi d'événement. Si vous utilisez JDK 1.6, vous pouvez également utiliser la classe SwingWorker
plutôt que invokeLater
.
Vous n'avez besoin d'appeler ces méthodes qu'en utilisant invokeLater() (ou en utilisant le SwingWorker) lorsque vous modifiez votre composant (ou peignez dessus) à l'intérieur de ces méthodes. Si vous faites simplement des calculs, vous n'avez besoin de synchroniser que lorsque vous accédez au résultat, par exemple. la méthode paint().
Vous devez généralement utiliser SwingUtilities.invokeLater
ou SwingWorker
pour isoler les modifications apportées aux composants de l'interface graphique de tout scénario de verrouillage potentiel (E/S sur fichier ou appels de serveur distant) ou des opérations gourmandes en ressources. Si vos calculs effectuent des lectures ou des écritures sur le disque, ou si vous faites des appels à un serveur, je vous suggère de réorganiser votre code pour que vous puissiez peindre tous les appels dans le fil AWT. De même, si vous réalisez que vos calculs prennent trop de temps à se terminer et que votre interface graphique semble léthargique, il serait prudent de les éliminer.
- 1. Composant de vue de planification dans Swing
- 2. Comment déterminer un composant swing?
- 3. Quand un composant Swing est-il 'affichable'?
- 4. Affichage du code étendu du compilateur - C++
- 5. Utilisation du fichier SWC du composant Flash dans Flex
- 6. vacillante de composant Swing lorsque mis à jour beaucoup
- 7. Composant GUI de liste de propriétés dans Swing
- 8. doute dans le concept de fil
- 9. Swing: Comment régler la hauteur d'un composant à la hauteur du conteneur?
- 10. Existe-t-il une implémentation gratuite (LGPL, BSD, etc.) du composant swing de l'éditeur XML?
- 11. Peindre des chaînes RTF/HTML dans un composant swing personnalisé
- 12. Github doute - repo de synchronisation
- 13. Modification du type de ViewData dans le contrôleur étendu
- 14. Supprimer le composant Swing en utilisant Valider ou Revalider
- 15. In Flex 3 Utilisation d'un composant List
- 16. Java Swing - Utilisation de JScrollPane et de l'avoir fait défiler vers le haut
- 17. nouveau à Hibernate - doute
- 18. Oracle Schema Doute?
- 19. LINQ où Clause doute
- 20. El doute d'expression
- 21. Equivalent du pack de Swing en C#
- 22. Définir l'identité du thread
- 23. ID de travail sous UNIX doute
- 24. Log4J Swing Appender
- 25. Swing custon JComponent taille
- 26. Utilisation de l'attribut jwcid de Tapestry et du composant @Block pour le classement CSS?
- 27. Comment savoir une utilisation de la mémoire de thread?
- 28. Importation d'ASCII étendu dans Oracle
- 29. RE étendu dans Emacs lgrep?
- 30. 'align': attribut étendu non reconnu
Donc, juste être des méthodes d'un composant de swing étendu implique l'exécution dans l'EDT par défaut? – ktulur
Jetez un oeil à cet article. C'est un bon résumé. http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html –