我为可能很蹩脚的问题道歉,但我是JavaFX的新手,在阅读了4篇教程之后,我找不到有关约束如何工作的明确信息。
我可以为任何控件设置约束吗?这是我想要实现的目标。我有VBox
ButtonBar
固定高度,我希望第二个控件在我调整VBox
时调整剩余区域。
<AnchorPane id="main-pane" style="-fx-border-color: #ADFF2F;" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
<children>
<VBox prefHeight="300.0" prefWidth="400.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<ButtonBar prefHeight="40.0" prefWidth="200.0">
<buttons>
<Button mnemonicParsing="false" text="Button" />
<Button mnemonicParsing="false" text="Button" />
</buttons>
</ButtonBar>
<AnchorPane id="inner-pane" style="-fx-border-color: #FF0000;">
<children>
<ColorPicker prefHeight="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
</children>
</AnchorPane>
</children>
</VBox>
</children>
</AnchorPane>
有趣的是,当我调整窗口大小时,inner-pane
会变宽,但边缘不会。我该如何解决这个问题?
答案 0 :(得分:1)
考虑到您使用的是SceneBuilder
,您可以执行以下操作:
删除锚定窗格并使ColorPicker成为VBox
的子项。因为anchorpane
并不是您想要实现的目标的完美布局。它允许子节点的边缘锚定到锚定窗格边缘的偏移量,但是当它发生相同的情况时没有属性来强制它们的增长。
在ColorPicker
布局属性中设置VBox.vgrow="ALWAYS"
,将最大高度和最大宽度设置为MAX_VALUE
。
FXML (如果您不使用SB)
<AnchorPane id="main-pane" style="-fx-border-color: #ADFF2F;" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
<children>
<VBox prefHeight="300.0" prefWidth="400.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<ButtonBar prefHeight="40.0" prefWidth="200.0">
<buttons>
<Button mnemonicParsing="false" text="Button" />
<Button mnemonicParsing="false" text="Button" />
</buttons>
</ButtonBar>
<ColorPicker prefHeight="200.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" VBox.vgrow="ALWAYS" />
</children>
</VBox>
</children>
</AnchorPane>