【问题标题】:How to make the children of a composite visible immediately after disposed them and loaded them again in SWT?如何在处理它们并在 SWT 中再次加载它们后立即使组合的子级可见?
【发布时间】:2016-12-20 16:43:47
【问题描述】:

我正在使用 Eclipse RCP。我有一个标准方法 createPartControl(Composite parent) 的视图,我已实现如下:

public void createPartControl(Composite parent) {

    this.parent = parent;

    createContent();
}

在 createContent() 中,复合父对象获取了一些我想要更新的元素(例如,具有某物状态的表)。因此,我有一个更新按钮。当你点击它时,所有 parent 的孩子都应该被释放,方法 createPartControl(parent) 应该被再次执行。

这是我目前的代码:

buttonUpdate = new Button(parent, SWT.NONE);
buttonUpdate.setText("Update");
GridData gridData = new GridData(80, 30);
buttonUpdate.setLayoutData(gridData);
buttonUpdate.addListener(SWT.Selection, new Listener() {
    public void handleEvent(Event e) {
        switch (e.type) {
        case SWT.Selection:
            for (Control control : parent.getChildren()) {
                control.dispose();
            }
            createPartControl(parent);
            break;
        }
    }
});

当我启动我的应用程序并单击更新按钮时,窗口变为空但没有出现新内容。只有当我在我的应用程序中打开另一个视图然后切换回来时,我才会看到更新的内容。如何使新内容立即可见?

【问题讨论】:

    标签: java swt rcp composite


    【解决方案1】:

    您需要重新布局父组合。

    打电话

    parent.layout(true, true);
    

    createPartControl 通话之后。

    【讨论】:

    • 抱歉,我们的帖子时间重叠。不过谢谢!
    【解决方案2】:

    我明白了!我找到了this page

    parent.layout(true, true);
    

    帮助我。

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 1970-01-01
      • 2022-01-10
      • 2012-09-25
      • 2013-03-16
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2020-07-04
      相关资源
      最近更新 更多