JFX:锁定另一个舞台/检测阶段顺序的舞台

时间:2017-11-02 03:43:13

标签: javafx stage

假设我有三个Java FX阶段:A,B和C.每个阶段都有自己的打开窗口,我的目标是以下行为:

如果A成为焦点,B应该出现在B -> A-B-C

的顶部和C顶部

如果B正在关注焦点,Be应该出现在后面的{C}和A前面-> A-C-B

如果C正在关注焦点,那么-> A-B-C

了解toFront()功能并尝试相应地手动强制执行订单,只要其中一个阶段重新获得焦点,只需向正确顺序中的每个阶段调用toFront(),但这会导致意外情况闪烁,因为显然没有办法确定哪些窗口已经在正确的位置。

不幸的是我无法使用模态窗口系统,因为所有窗口都需要保持并行运行。

有没有办法实现这个目标?

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

刚遇到同样的问题。 我能找到的唯一“黑客”是存储阶段聚焦的顺序,然后以相反的顺序通过所有阶段并调用.toFront()。

每当一个舞台获得焦点时,我会将其放入开放阶段列表的顶部。 然后我阻止EventHandler全局,因为每次一个阶段收到.toFont()调用它也会得到焦点。

适用于Mac。 不起作用并在Windows下显示奇怪的行为

{{1}}