在 JavaFX 中访问场景内的窗格?

Accessing the panes inside a scene in JavaFX?

我在这里发现了一些类似的问题,但其中 none 似乎是我问题的解决方案。

如何访问场景结构中的不同窗格?

目标是:

我在场景中有一个拆分窗格,它被放在一个边框窗格上。在拆分窗格的左锚窗格中,我想要一个手风琴。右边应该根据手风琴选择的菜单点显示一个场景。

因此,如果可以将场景设置到拆分窗格的右侧,那就太好了,因为这样我就可以更改这个场景。改变整个场景不是一个很好的解决方案,因为手风琴不会在原来的地方打开,而且应用程序消耗了太多的 fxml 文件。

是否可以只更改拆分窗格的右侧,还是我的方法完全错误?

我在这里找到了如何获取场景中的所有节点,但它并没有给我带来进一步的帮助。

有经验的请多多指教,谢谢!

假设拆分窗格中只有两个节点,您可以将第二个(右侧)替换为

splitPane.getItems().set(1, newNode);

(更新)

如果您的 SplitPane 是在 FXML 文件中定义的,您将需要在控制器中执行此操作。要访问拆分窗格,只需给它一个 fx:id 属性(在 SceneBuilder 中,这是在右侧面板的 "code" 部分)并使用 @FXML 注释将其注入控制器:

FXML 文件:

<!-- imports omitted -->
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.MyController">
   <SplitPane fx:id="mainSplitPane">
      <!-- ... -->
   </SplitPane>
</AnchorPane>

MyController.java:

package com.example ;

// imports omitted...

public class MyController {

    @FXML
    private SplitPane mainSplitPane ;

    @FXML
    private void handleButtonPress() {
        Node newNode = ... ;
        mainSplitPane.getItems().set(1, newNode);
    }

    // ...
}