在 e4 中打开多个 windows 锁定前一个 windows
Opening multiple windows in e4 locks previous windows
我正在使用 E4 和 SWT 构建应用程序。对于单击按钮,有时会打开一个新的 window(shell)。问题是当我打开一个新的 window 时,我无法使用另一个 windows,从某种意义上说,它被锁定了。除非我关闭最新的 window,否则无法访问其他的。这使得调试有点困难。我不确定这是由于 e4 模型还是 SWT 框架。
你能告诉我这是为什么以及如何克服这个问题吗?
提前致谢。
我在创建新的 window (MWindow
) 并将其添加到透视图 (MPerspective
) 时,曾 运行 处理过这个问题。如果这是你正在做的,那么你有两个选择:
将新的 window 添加到应用程序 (MApplication
) 而不是透视图
将标签 IPresentationEngine.WINDOW_TOP_LEVEL
添加到新的 window。 (有关更多信息,请参阅:https://bugs.eclipse.org/bugs/show_bug.cgi?id=441251)
(2) 的附加信息:如果您还希望 window 最小化并在 windows 任务栏中有一个图标表示,您可以使用以下设置来配置渲染器
MWindow window = modelService.createModelElement(MTrimmedWindow.class);
window.getTags().add(IPresentationEngine.WINDOW_TOP_LEVEL);
window.getPersistedState().put(IPresentationEngine.STYLE_OVERRIDE_KEY, "" + SWT.SHELL_TRIM);
我发现哪里出了问题。
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);
感谢大家的帮助。
我正在使用 E4 和 SWT 构建应用程序。对于单击按钮,有时会打开一个新的 window(shell)。问题是当我打开一个新的 window 时,我无法使用另一个 windows,从某种意义上说,它被锁定了。除非我关闭最新的 window,否则无法访问其他的。这使得调试有点困难。我不确定这是由于 e4 模型还是 SWT 框架。 你能告诉我这是为什么以及如何克服这个问题吗?
提前致谢。
我在创建新的 window (MWindow
) 并将其添加到透视图 (MPerspective
) 时,曾 运行 处理过这个问题。如果这是你正在做的,那么你有两个选择:
将新的 window 添加到应用程序 (
MApplication
) 而不是透视图将标签
IPresentationEngine.WINDOW_TOP_LEVEL
添加到新的 window。 (有关更多信息,请参阅:https://bugs.eclipse.org/bugs/show_bug.cgi?id=441251)
(2) 的附加信息:如果您还希望 window 最小化并在 windows 任务栏中有一个图标表示,您可以使用以下设置来配置渲染器
MWindow window = modelService.createModelElement(MTrimmedWindow.class);
window.getTags().add(IPresentationEngine.WINDOW_TOP_LEVEL);
window.getPersistedState().put(IPresentationEngine.STYLE_OVERRIDE_KEY, "" + SWT.SHELL_TRIM);
我发现哪里出了问题。 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);
感谢大家的帮助。