我认为 mIRC 的以下屏幕截图将帮助您理解我的问题。
我有一个主舞台 (1),在某个窗格(或任何其他容器)(2) 中,我想以这种方式添加几个子窗口 (3),这样它们就不能移到拥有窗口之外并且它们不可见/ 在 OS 任务栏中可选择。
有没有办法在 JavaFX 2.2 中做到这一点?如果不使用窗户(单独的舞台),是否可以使用任何其他可移动容器?
我认为 mIRC 的以下屏幕截图将帮助您理解我的问题。
我有一个主舞台 (1),在某个窗格(或任何其他容器)(2) 中,我想以这种方式添加几个子窗口 (3),这样它们就不能移到拥有窗口之外并且它们不可见/ 在 OS 任务栏中可选择。
有没有办法在 JavaFX 2.2 中做到这一点?如果不使用窗户(单独的舞台),是否可以使用任何其他可移动容器?
JavaFX 2.2 中没有框架来促进这一点。
您可以使用 JavaFX 问题跟踪器跟踪 JavaFX对接框架功能请求并为其投票。
您可以使用公共 JavaFX API 自己创建这样的框架。使用 Stages,可能有点难以获得您想要的行为,但我认为如果您使用放置在主应用程序阶段内的自定义可移动窗格,这将是可能的。
但是,在提供对接框架的正式实现之前,您最好使用现有的应用程序框架(如 NetBeans)并将您的 JavaFX 组件嵌入到由现有框架创建的框架内的 JFXPanel 中。
回答您的一些具体问题。
在 OS 任务栏中不可见/不可选。
在显示新的子窗口之前,请调用 subwindow。initOwner将子窗口的所有者设置为应用程序的主要阶段。
它们不能移出拥有窗口
您可以将侦听器添加到子窗口和主窗口的 x、y、宽度和高度属性。如果尝试将子窗口移出父窗口的边界,则在侦听器代码中重新定位子窗口。如果在您的 JavaFX 侦听器收到通知之前由操作系统处理大小和位置更改通知(我认为很可能是这种情况),这种策略可能会有点笨拙。
请参阅VFXWindows项目。它允许您在 JavaFX 应用程序中创建窗口和子窗口。它作为JFXtras 2包的一部分提供。