我正在使用 PopUpManager 来启动一堆事件窗口。
我想让它一次只能打开一个窗口,但我在代码中看不到跟踪打开的窗口以设置条件的任何地方。我猜它只是创建窗口然后将它们释放?
考虑一个 windowCount 变量,它在我添加一个窗口时递增,在我删除一个窗口时递减,但由于 PopupManager 在不同的类中被调用,我必须开始在整个地方抛出事件。我可以这样做,但我想知道是否有更直接的方法?
我正在使用 PopUpManager 来启动一堆事件窗口。
我想让它一次只能打开一个窗口,但我在代码中看不到跟踪打开的窗口以设置条件的任何地方。我猜它只是创建窗口然后将它们释放?
考虑一个 windowCount 变量,它在我添加一个窗口时递增,在我删除一个窗口时递减,但由于 PopupManager 在不同的类中被调用,我必须开始在整个地方抛出事件。我可以这样做,但我想知道是否有更直接的方法?
systemManager (而不是 PopUpManager,如图...)提供有关当前打开的弹出窗口的信息。
如果您的弹出窗口都是模型,那么您将对“ systemManager.numModalWindows ”感兴趣:
模态窗口的数量。模态窗口不允许单击通常会在该窗口中激活 FocusManager 的另一个窗口。PopUpManager 在创建和销毁模式窗口时修改此计数。
否则试试“ systemManager.popUpChildren ”:
此 ISystemManager 作为父级的 topMost(弹出)窗口的列表。
ISystemManager 具有各种类型的子项,例如应用程序、弹出窗口、工具提示和自定义光标。您可以通过 popUpChildren 属性访问最顶层的窗口。
IChildList 对象具有 getChildAt() 等方法和 numChildren 等属性。例如,popUpChildren.numChildren 给出了最顶层窗口的数量,您可以通过 popUpChildren.getChildAt(i) 访问它们。
我看到几个选项:
1)让你所有的窗口模态;以便在关闭窗口之前无法使用该应用程序。这是PopUpManager 上的createPopUp方法的参数。大概您没有创建其他弹出窗口的弹出窗口。
2) 创建您自己的 Manager 类,可能是 PopUpManager 类的扩展,用于跟踪所有打开的窗口。然后,您将拥有所有 PopUps 的单一来源,并且可以以这种方式维护它们。