包含的FXML不能正确适合父级

时间:2015-07-28 12:31:19

标签: javafx fxml

我在一个主FXML视图中包含了几个FXML但事情是当我更改父级的高度AnchorPane时包含的视图高度不是更改,我在文档中没有找到任何关于包含FXML的大小的内容。任何人都不知道吗?

<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" SplitPane.resizableWithParent="false">
    <children>
        <fx:include fx:id="child" source="child.fxml" />
    </children>
</AnchorPane>

1 个答案:

答案 0 :(得分:4)

AnchorPane将尝试根据您在这些子节点上设置的约束来调整其子项的大小。来自documentation

  

应用程序为每个子项设置锚点约束以配置   锚定在一侧或多侧。如果孩子被固定在对侧   (并且可以调整大小),锚窗格将调整它以保持两者   偏移,否则锚定窗格会将其调整为其首选大小   尺寸。如果在前一种情况下(锚定在对面)和孩子   不可调整大小,只有顶/左锚点才会被尊重。

在您发布的代码中,您没有在子节点上设置任何约束,因此它只会根据其首选大小进行调整。

例如,如果您希望孩子伸展以填充整个AnchorPane,那么您可以

<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" SplitPane.resizableWithParent="false">
    <children>
        <fx:include fx:id="child" source="child.fxml" AnchorPane.topAnchor="0.0"
             AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
             AnchorPane.buttonAnchor="0.0" />
    </children>
</AnchorPane>

请注意,这也假设child.fxml生成的任何节点都可以增长到AnchorPane的大小(例如maxWidthmaxHeight属性是否合适在调整窗口大小等时,AnchorPane也会增长。您可能还需要考虑AnchorPane是否是最佳选择,或者some other layout是否有效更好。

简而言之,在布局方面使用<fx:include>没有什么特别之处:它的行为与任何其他场景图层次结构一样。