0
我在基于JavaFX的游戏中创建弹出式确认消息,并试图弄清楚布局是如何工作的。我的弹出类扩展StackPane它的构造看起来像这样:JavaFX VBox调整大小
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安排使用了完整的垂直空间,即使它的首选高度是其子项的总高度(加上插入等,按照文档)。基本上,这是一个高大的红色横杆,跨越窗口的高度。
有没有办法让它使用它的首选高度而不是最大高度?我希望它的高度足以适合其孩子。
您可以将其最大高度属性绑定到其前置高度之一。 –
好主意,但它没有改变任何东西。我添加了:arrangement.maxHeightProperty()。bind(arrangement.prefHeightProperty());但它仍然是一个高大的红色酒吧。 –
以前的评论不正确。 –