- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我想弹出一个 JFACE WizardDialog
,它在其构造函数中采用一个 shell
参数。
我尝试通过两种不同的方式获取 shell:
Shell shell = new Shell(display);
Shell shell = display.getActiveShell();
这两种方式似乎都可以正常工作,因为它们创建了一个很好的模态对话。我的问题是,哪一个是正确的?
实例化一个新的 shell 是有意义的,但如果 Activity shell 有效,我为什么要这样做呢?
最佳答案
传递给 WizardDialog 的 Shell 是它的父 shell,例如控制对话框显示在哪个监视器上。父 shell 也会影响对话框的生命周期。如果父 shell 关闭,则其所有子 shell 也将关闭(见下文)。
对话框不使用此 shell 创建其内容。因此将创建一个新的 shell。
因此,您不应创建新的 shell,而应使用现有的 shell。 display.getActiveShell()
在大多数情况下都有效,但我建议使用众所周知的 shell。
当您在 Eclipse 工作台应用程序(RCP 或 Eclipse IDE 插件)中打开对话框时,可能会出现陷阱:如果发生这种情况,display.getActiveShell()
可能会返回进度监视器对话框在向导打开时打开,并在进度报告完成后意外关闭向导对话框。 Activity 工作台窗口通常是一个不错的选择。
关于java - 应将哪个 Shell 传递给 WizardDialog 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26911947/
我是一名优秀的程序员,十分优秀!