我正在尝试寻找一种解决方案,其中一层可以与另一层重叠而不将其推向任何方向。类似于这样: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非常感谢您的帮助。
更新:示例图片
您可以使用简单的Pane
来处理主要内容和配置重叠窗格,然后在主要内容中添加一个侦听器,以更改配置窗格的可见性。
Pane container = new Pane();
Pane mainContent = ... ;
// you main content pane stuff
Pane config = ... ;
// your config pane stuff
container.getChildren().addAll(mainContent, config); // in this order
mainContent.setOnMouseClicked(e -> config.setVisible( ! config.isVisible()) );