gpt4 book ai didi

java - 应将哪个 Shell 传递给 WizardDialog 构造函数

转载 作者:行者123 更新时间:2023-11-30 11:12:23 25 4
gpt4 key购买 nike

在我的应用程序中,我想弹出一个 JFACE WizardDialog,它在其构造函数中采用一个 shell 参数。

我尝试通过两种不同的方式获取 shell:

  1. Shell shell = new Shell(display);

  2. 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com