【发布时间】:2020-02-02 18:14:17
【问题描述】:
我正在尝试找到一个解决方案,其中一个层可以与另一个层重叠,而不会将其推向任何方向。类似这样:https://docs.oracle.com/javase/7/docs/api/javax/swing/JLayeredPane.html 但在 JavaFX 中。
这似乎是一个非常基本的功能,但我真的找不到解决方案。
我想要达到的效果如下:
我想要一个根Node,假设是一个BorderPane,它的left 有一个(设置)pane,它的center 是主要内容。当用户单击center 中的按钮时,left 窗格将显示,而无需将center 窗格推到右侧。这就是问题所在,因为期望的行为是在居中的内容上方而不是在它旁边。
toFront 和 toBack 函数乍一看似乎是一个可行的解决方案,但它只会改变渲染顺序。
不幸的是,我认为BorderPane 无法解决此问题,因为它无法管理重叠。但让我们希望我在这里错了。使用BorderPane 来实现这一点不是强制性的。如果它的工作方式与我在上一节中提到的相似,就足够了。
也许可以通过SubScene 来实现,但我真的不知道怎么做。
SubScene 文档: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/SubScene.html
非常感谢任何帮助。
更新:示例图片
【问题讨论】:
-
不确定这是否会对您有所帮助,但您是否看过这个 Stack Overflow 问题:How to solve the overlapping of the controls each other belonging to two different panes
-
如果右侧内容窗格在“打开”时不会将主内容窗格推向左侧,这将是一个可能的解决方案。我想实现重叠。问题是每当调整其中一个窗格的大小时,它也会推动另一个窗格。
-
你不能使用 StackPane 并将重叠节点的对齐设置为 CENTER_RIGHT 并使用 toForth() 吗?或者可能是 CENTER 的 BorderPane,其中有您的侧边栏。
-
BorderPane可能不是为此使用的最佳布局。我已经发布了一个至少部分满足您需要的答案:stackoverflow.com/a/37236961/2991525 AStackPane应用到背景窗格的边距等于菜单的未展开大小可以负责调整菜单大小并使事情变得比我 3 年前提出的解决方案要简单一些...