Dans une application Java "sérieuse", vous aurez des modèles derrière plusieurs de vos éléments GUI: A DocumentModel
soutenant un JEditorPane
, par exemple, ou un ListModel
derrière un JList
.Est-il possible de changer un modèle en dehors du thread de travail Swing?
On nous dit toujours de ne pas effectuer de modifications de l'interface graphique depuis l'extérieur du thread de travail Swing et de lui donner SwingUtilities.invoke...()
pour contourner ce problème. Bien, je peux vivre avec ça! C'est certainement nécessaire (et fonctionne bien) lorsque vous modifiez directement les attributs des composants de l'interface graphique.
Idéalement, la plupart de mes changements GUI-visibles seront de modèles, pas de JComponents, de toute façon. Mais parce qu'ils sont visibles sur l'interface graphique, sont-ils "comptés" comme des changements d'interface graphique? C'est à dire. est-ce que les événements de changement changent et les écouteurs fournissent le découplage nécessaire, ou les changements de modèle doivent-ils également être inclus dans invoke...()
?
Probablement un vieux chapeau pour les pros de Swing, mais je n'ai pas trouvé de référence qui indique clairement d'une façon ou d'une autre.
-1: Pas la réponse que je voulais entendre! (Je plaisante, +1) Merci! –
En ce qui concerne le débogage des problèmes de thread Swing, je recommande fortement ce lien: http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html Le CheckThreadViolationRepaintManager m'a fait gagner beaucoup de temps. –
Le texte Swing * déplace * certains * événements vers l'EDT. Bien sûr, ça fait juste un plus gros gâchis. –