JavaFX-重叠窗格

问题描述 投票:0回答:1

我正在尝试寻找一种解决方案,其中一层可以与另一层重叠而不将其推向任何方向。类似于这样:https://docs.oracle.com/javase/7/docs/api/javax/swing/JLayeredPane.html但在JavaFX中。

这似乎是一个非常基本的功能,但是我找不到真正的解决方案。

我想实现的目标如下:

我想要一个根Node,比方说一个BorderPane,在它的left中有一个(设置)pane,在它的center中有主要内容。当用户单击center中的按钮时,将显示left窗格而不向右推center窗格。这就是问题所在,因为所需的行为是覆盖居中内容而不是居中内容。

toFronttoBack函数乍看之下似乎是一个可行的解决方案,但它仅更改渲染顺序。

[不幸的是,我认为BorderPane不能解决问题,因为它无法管理重叠。但是我们希望我错了。使用BorderPane来实现此目的不是强制性的。如果它的工作方式与我在上一节中提到的类似,就足够了。

也许可以用SubScene实现,但我真的不知道如何。

SubScene文档:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/SubScene.html非常感谢您的帮助。

更新:示例图片

Example image

javafx layer overlap pane
1个回答
0
投票

您可以使用简单的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()) );
© www.soinside.com 2019 - 2024. All rights reserved.