将 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。
我有一个 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。