JavaFX VBox调整大小

时间:2015-10-07 04:04:18

标签: java layout javafx-8

我在基于JavaFX的游戏中创建弹出确认消息,并试图弄清楚布局是如何工作的。我的PopUp类扩展了StackPane,它的构造函数如下所示:

public PopUp (String str)
{
    super();
    Color dark = Color.rgb(0, 0, 0, 0.35);
    setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
    setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE);
    FXUtil.backgroundColor(dark, this);

    Text displayText = new Text(str);
    displayText.setFont(FontFactory.general(18.0));
    displayText.setFill(Color.WHITE);
    displayText.setWrappingWidth(560.0);

    buttonBox = new HBox(20.0);
    buttonBox.setAlignment(Pos.CENTER);
    FXUtil.backgroundColor(Color.GREY, buttonBox);

    VBox arrangement = new VBox(20.0, displayText, buttonBox);
    arrangement.setAlignment(Pos.CENTER);
    arrangement.setMaxWidth(600.0);
    FXUtil.backgroundColor(Color.RED, arrangement);

    getChildren().add(arrangement);
}

(FXUtil类可以方便地设置背景颜色,而FontFactory听起来很像)

稍后会添加几个按钮,但我很惊讶地看到VBox排列使用完整的垂直空间,即使它的首选高度是其子节点的组合高度(加上插入等等,按照DOC)。基本上,它是一个高大的红色条,横跨窗户的高度。

有没有办法让它使用首选高度而不是最大高度?我希望它足够高,以适应它的孩子。

1 个答案:

答案 0 :(得分:1)

将max height属性绑定到计算的height属性。为:

arrangement.maxHeightProperty().bind( arrangement.heightProperty());