包含的FXML不适合父元素



我在一个主要的FXML视图中包括几个FXML s,但问题是,当我改变父级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>

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

应用程序在每个子节点上设置锚约束来配置锚在一侧或多侧。如果一个孩子被固定在相反的两侧(并且是可调整大小的),锚窗格将调整其大小以保持两者偏移量,否则锚窗格会将其调整为首选大小大小。如果在前一种情况下(锚定在相对的两侧)和孩子是不可调整大小的,那么只有上/左锚会被显示。

在您发布的代码中,您没有对子节点设置任何约束,因此它将只是调整为其首选大小。

例如,如果您想让子元素拉伸以填充整个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是否是最佳选择,或者其他布局是否可能更好。

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

最新更新