调整SplitPane的大小以适合AnchorPane父级

时间:2016-08-14 18:42:08

标签: java javafx fxml scenebuilder

这可能听起来像是重复的,因为有很多关于调整儿童窗格以适应父窗格的问题,但我几乎没有运气就尝试了所有内容。

我的SplitPane位于AnchorPane内,这是我的原始代码:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"  
    minWidth="-Infinity" prefHeight="792.0" prefWidth="1055.0" 
    xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1"
     fx:controller="com.judeochalifu.stock_manager.controller.NewSupplierController">
   <children>
      <SplitPane fx:id="splitPlane" dividerPositions="0.5" layoutX="371.0" layoutY="229.0" prefHeight="792.0" prefWidth="1055.0"orientation="VERTICAL"  AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
    <items>
      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" />
      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" />
    </items>
    </SplitPane>
 </children>
</AnchorPane>

这是没有调整大小的输出:

enter image description here

当我拖动窗口以增加宽度或高度时,这就是我得到的:

enter image description here

所需的结果是SplitPane在窗口展开时消耗,即根据Anchorpane的宽度和高度调整大小。

环顾四周,我发现OP正在尝试类似的两个问题:

JavaFX: FXML: How to make the child to extend its size to fit the parent pane?

JavaFX Panel inside Panel autoresizing

答案建议仅使用属性:

 AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"

在子窗格中。我试过这个没有运气:这就是我的代码现在的样子:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"  
         minWidth="-Infinity" prefHeight="792.0" prefWidth="1055.0" 
        xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1"
   fx:controller="com.judeochalifu.stock_manager.controller.NewSupplierController">
     <children>
        <SplitPane fx:id="splitPlane" dividerPositions="0.5" "orientation="VERTICAL"  
           AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"  
           AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
           <items>
             <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" 
               prefWidth="160.0" />
             <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0"  
               prefWidth="160.0" />
           </items>
      </SplitPane>
     </children>
  </AnchorPane>

我错过了什么?

2 个答案:

答案 0 :(得分:0)

我无法编译您的代码,因为它中存在错误。第一个示例中的prefWidthorientation参数之间缺少空格,第二个示例中的orientation参数前面有不必要的引号。修好后,一切都按预期工作。

这里是固定代码:

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"  
            minWidth="-Infinity" prefHeight="792.0" prefWidth="1055.0" 
            xmlns="http://javafx.com/javafx/null" xmlns:fx="http://javafx.com/fxml/1"
            fx:controller="com.judeochalifu.stock_manager.controller.NewSupplierController">
    <children>
        <SplitPane fx:id="splitPlane" dividerPositions="0.5" orientation="VERTICAL"
                   AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
                   AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
            <items>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0"/>
                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0"/>
            </items>
        </SplitPane>
    </children>
</AnchorPane>

请注意,您可以指定SplitPane的prefWidthprefHeightlayoutXlayoutY,但由于锚点设置为0,因此它已设置为0 AnchorPane的唯一孩子,它将始终占用所有可用空间,因此它是多余的。

答案 1 :(得分:0)

我找到了答案!我正在寻找同样的东西,但我的设置有点不同。我使用了一个外部滚动窗格,在那个锚窗格中,在那个拆分窗格中,在那个锚窗格中,它会保持很小并阻碍拆分窗格调整大小。我为修复它所做的是选择 SCROLLpane 并将适合宽度和适合高度设置为 true。还有一些适合父母。