2010-09-20 59 views
3

我有一个View类(扩展为ViewPart),其中包含从FormToolkit创建的ScrolledForm。当某些事件发生在应用程序的其他视图中时,我想在此视图中更改表单并将其实时更新至用户。如何从Eclipse RCP应用程序中的代码更新视图

我有属性更改的支持,现在支持,并增加在查看

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

其中createForm(event)重新创建基于事件的形式,下面的方法。

问题是在此之后UI不显示新窗体。我知道表单已经创建好了,因为如果我拖动视图和其他视图之间的边界来调整它的大小,那么视图会立即更新以显示新的表单。我如何以编程方式强制刷新UI中的视图?

回答

5

你试过了吗:form.reflow(true);

这将重新计算表单的布局。

如果此操作失败,请尝试调用xxx.layout(true)其中'xxx'是SWT Composite的变量mame,它是表单实例的父级。我假设表格是在您的createForm(event)方法中针对其父组合创建的?

+1

谢谢!你的假设对父母是正确的。单独调用reflow无效,但调用父级的布局(true)已解决此问题。 – Alb 2010-09-22 14:49:53

相关问题