我正在使用E4和SWT构建应用程序。对于按钮单击,有时会打开一个新窗口(shell)。问题是当我打开一个新窗口时,我无法使用其他窗口,从某种意义上说,它已被锁定。除非我关闭最新窗口,否则无法访问其他窗口。这使得调试有点困难。我不确定这是否是由e4模型或SWT框架引起的。 你能告诉我为什么会这样,以及如何克服这个问题?
提前致谢。
答案 0 :(得分:0)
我在创建新窗口(MWindow
)并将其添加到perpective(MPerspective
)之前遇到过此问题。如果这是你正在做的,那么你有两个选择:
将新窗口添加到应用程序(MApplication
)而不是透视
将标记IPresentationEngine.WINDOW_TOP_LEVEL
添加到新窗口。 (有关更多信息,请参阅:https://bugs.eclipse.org/bugs/show_bug.cgi?id=441251)
(2)的附加信息:如果您还希望窗口可以最小化并且在Windows任务栏中有图标表示,则可以使用以下设置来配置渲染器
MWindow window = modelService.createModelElement(MTrimmedWindow.class);
window.getTags().add(IPresentationEngine.WINDOW_TOP_LEVEL);
window.getPersistedState().put(IPresentationEngine.STYLE_OVERRIDE_KEY, "" + SWT.SHELL_TRIM);
答案 1 :(得分:0)
我发现了什么问题。 shell创建错误,因为我使用的是APPLICATION_MODAL位:
shell = new Shell(Display.getCurrent(), SWT.TITLE | SWT.CLOSE | SWT.MAX | SWT.SHELL_TRIM | SWT.APPLICATION_MODAL | SWT.YES | SWT.NO);
必须是PRIMARY_MODAL:
shell = new Shell(Display.getCurrent(), SWT.TITLE | SWT.CLOSE | SWT.MAX | SWT.SHELL_TRIM | SWT.PRIMARY_MODAL | SWT.YES | SWT.NO);
感谢您的帮助。