我有一个包含两个部分的零件堆栈。第二部分有一个ToolBar带有Direct Tool Item图标的图标。我想初始化第二部分而不显示它,因为有些代码需要立即执行,而不是在聚焦时。为此,我调用:partService.showPart(secondPartID, PartState.CREATE);在此之后我打电话:partService.showPart(secondPartID, PartState.ACTIVATE);然后,这会按预期将第二个视图带到前面,但工具栏丢失了。我已经尝试获取部件的工具栏并获取小部件,但小部件为空。如果我切换到第一部分(通过单击选项卡)然后切换回第二部分,则工具栏已成功创建。我想知道我是否错误地使用了CREATE/ACTIVATE调用,因为我得到的行为很奇怪。是什么原因造成的?
1 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
通过将其包装在 an 中,async
它可以修复它。我已经尝试了多种变体来解决这个问题,这是唯一可以解决的问题。
Display.getDefault().asyncExec(() -> partService.showPart(id, PartState.ACTIVATE));
一定是事情还没有初始化/准备好导致工具栏无法添加。通过使用异步,它必须等待直到它准备好显示工具栏。
如果有人能够提供任何额外信息来说明为什么会修复它,我会更新答案。
添加回答
举报
0/150
提交
取消