如何在Eclipse RCP应用程序中从代码更新视图

4

我有一个View类(扩展ViewPart),其中包含一个由FormToolkit创建的ScrolledForm。当应用程序中的其他视图发生特定事件时,我希望更改此视图中的表单并实时更新给用户。

我现在已经添加了属性更改支持,并在View中添加了以下方法:

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

createForm( event ) 重新创建基于事件的表单。

问题在于,UI在此之后不显示新表单。我知道表单已经成功创建,因为如果我拖动视图和另一个视图之间的边框来调整大小,那么视图会立即更新以显示新表单。如何在程序中强制刷新UI中的视图?

1个回答

6

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

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

如果这样仍然失败,请尝试调用xxx.layout(true),其中'xxx'是SWT Composite的变量名称,它是表单实例的父组合。我假设表单是根据其父组合在createForm(event)方法中创建的?


1
谢谢!您的假设关于父元素是正确的。仅调用reflow并没有起作用,但在父元素上调用layout(true)解决了这个问题。 - Alb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接