2015-07-28 21 views
1

我包括幾個FXML s在一個主要FXML視圖,但事情是當我改變父母的高度是一個AnchorPane包括的視圖高度不會改變, t在文檔中找到包含FXML的大小的任何內容。任何想法的人?包括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> 
+0

佈局將由任何容器放置在(在'AnchorPane'你的情況)所包含的FXMLs的根元素根據由那些根元素(一個指定的約束來執行,'AnchorPane'這些將是類似的東西'leftAnchor','topAnchor'等)。請顯示一些代碼,顯示你在做什麼。 –

+0

我知道,但在場景Builder中包括FXML它不顯示leftAnchor,topAnchor或任何 – user2137817

+0

不要緊,你如何生成FXML,它會以同樣的方式進行處理。所以,如果你不設置這些,那麼你不會得到你想要的結果。 (我不使用SceneBuilder太多,我根本不知道你可以做一個'外匯:include'在SceneBuilder ...) –

回答

3

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>:它的行爲就像任何其他的場景圖層級。