我有一个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大小?
发布于 2015-07-23 11:07:45
在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。
编辑:经过考虑,我认为您需要外部窗格,因为它是“容器”,没有它,内部窗格不能坚持什么。
发布于 2016-07-22 14:26:03
我也一直在努力解决这个问题,我最终通过避免AnchorPanes的嵌套包装来解决问题。我删除了AnchorPane作为SplitPane的子容器,因为包含的FXML的根目录也以AncherPane开头:
现在,我的主要FXML有如下所示:
<SplitPane>
<items>
<fx:include fx:id="navigationPanel" source="FX2NaviPanel.fxml"/>
<fx:include fx:id="dataPanel" source="FX2dataPanel.fxml"/>
</items>
</SplitPane>
每个子FX2NaviPanel.fxml和FX2dataPanel.fxml仍然以AnchorPane开头:
<AnchorPane ...>
<children>
<GridPane></GridPane>
</children>
</AnchorPane>
与此和适当的最大尺寸,并适合父母和零锚的相关情况下,面板很好地坚持运动的拆分和调整主窗口。
https://stackoverflow.com/questions/31585371
复制相似问题