将 FXML 文件添加到 SplitPane 时,JavaFX 适合父级

JavaFX Fit to parent when adding FXML file to SplitPane

我有一个 SplitPane,左边是 TreeView,右边是内容区域。当我单击 TreeView 中的项目时,我想在右侧显示内容。我现在的做法是加载我在 SceneBuilder 中创建的 FXML。我的问题是 FXML 不适合 SplitPane。这就是我加载 FXML 文件的方式

if (selectedItem.getValue() == "Sample") {
    try {
        AnchorPane pane = (AnchorPane) FXMLLoader.load(getClass().getResource("Sample.fxml"));
        splitPane.getItems().set(1, pane);
    } catch (IOException e) {
        e.printStackTrace();
    }           
}

如何使我创建的 AnchorPane 适合原始 SplitPane 大小?

在 FX 中对齐很痛苦 i.t.a。

我建议如下:

<SplitPane>
    <TreeView /> //LEFT
    <ANCHORPANE AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> //RIGHT, anchors make the content stick to the corner
        <AnchorPane fx:id="myDynamicContent"/>
    </ANCHORPANE>
</SplitPane>

有了这个,内部窗格 myDynamicContent 应该被拉伸到所有角落。请告诉我这是否是答案。

您也可以尝试在您的内容上设置 AncorPane.* 属性,这样您就不需要嵌套的 AnchorPane。

编辑:考虑之后,我认为你需要外窗格,因为它是 "THE CONTAINER",没有它,内窗格就没有什么可坚持的。

我也一直在为此苦苦挣扎, 我终于通过避免 AnchorPanes 的嵌套包装解决了问题。 我已经删除了 AnchorPane 作为 SplitPane 的 child 容器,因为包含的 FXML 的根也以 AncherPane 开头:

现在我的主要 FXML 是这样的:

<SplitPane>
    <items>
        <fx:include fx:id="navigationPanel" source="FX2NaviPanel.fxml"/>
        <fx:include fx:id="dataPanel" source="FX2dataPanel.fxml"/>
    </items> 
</SplitPane>

并且每个 child FX2NaviPanel.fxml 和 FX2dataPanel.fxml 仍然以 AnchorPane 开头:

<AnchorPane ...>
   <children>
      <GridPane></GridPane>
   </children>
</AnchorPane>

有了这个和适当的最大尺寸,以及 fit-to-parent 和 zero-anchors 相关的面板很好地粘附了分离器的移动和主要尺寸的调整 window。