2010-09-20 5 views
3

J'ai une classe View (extends ViewPart) qui contient un ScrolledForm créé à partir d'un FormToolkit. Lorsque certains événements se produisent dans d'autres vues de l'application, je souhaite modifier le formulaire dans cette vue et le mettre à jour en temps réel pour l'utilisateur.Comment mettre à jour une vue à partir du code dans une application Eclipse RCP

Je reçois du soutien de soutien au changement de la propriété ajoutée et la méthode suivante dans la vue

public void propertyChange(PropertyChangeEvent event) { 
    form.dispose(); 
    toolkit.dispose(); 
    createForm(event); 
    form.redraw(); 
} 

createForm(event) recrée la forme en fonction de l'événement.

Le problème est que l'interface utilisateur n'affiche pas le nouveau formulaire après cela. Je sais que le formulaire est créé correctement car si je fais glisser la bordure entre la vue et une autre vue pour la redimensionner, la vue est immédiatement mise à jour pour afficher le nouveau formulaire. Comment puis-je forcer par programmation l'actualisation de la vue dans l'interface utilisateur?

Répondre

5

Avez-vous essayé: form.reflow(true);?

Cela va recalculer la disposition du formulaire.

Si cela échoue, essayez d'appeler xxx.layout(true) où 'xxx' est la variable mame du composant SWT qui est le parent de l'instance de formulaire. Je suppose que le formulaire est créé par rapport à son composite parent dans votre méthode createForm(event)?

+1

Merci! votre hypothèse était correcte à propos du parent est correct. L'appel de refusion seule n'a pas fonctionné, mais l'appel à layout (true) sur le parent a résolu le problème. – Alb

Questions connexes