如何更改VBox内部的StackPane的大小,并允许VBox拉伸到该大小?

时间:2017-04-06 22:26:50

标签: java user-interface javafx javafx-8

我有一个带有节点的StackPane,它们根据StackPane的当前大小调整自己的大小。我把这个StackPane放在一个VBox里面,这是场景的根源。 StackPane根据场景的大小增大和缩小(即,当用户调整窗口大小时增大和缩小)。所有这些功能都有效,但是当程序运行时,程序创建的窗口非常小,用户必须将其调整为更大才能看到其中的元素。

我已经尝试设置StackPane的prefWidth和prefHeight,但是VBox似乎没有根据StackPane的prefWidth和prefHeight自行调整大小。我还考虑设置VBox的prefWidth和prefHeight,它有效但不理想,因为我最终必须确定所有节点的大小,而不是让它们计算自己的大小。

简单等同于我所拥有的:

VBox root = new VBox();
MenuBar menu = new MenuBar();
Rectangle rect = new Rectangle(250, 50);
StackPane sp = new StackPane();

//sp.setPrefSize(300, 300);

root.getChildren().addAll(menu, rect, sp);

Scene scene = new Scene(root);

sp.prefWidthProperty().bind(scene.widthProperty());
sp.prefHeightProperty().bind(scene.heightProperty().subtract(menu.heightProperty().subtract(rect.heightProperty()));

primaryStage.setScene(scene);
primaryStage.show();

这样做的聪明方法是什么?

1 个答案:

答案 0 :(得分:0)

我找到了一个不理想的解决方案,但有效。我创建了一个透明矩形并将其放置在StackPane的背面,并将VBox,场景和舞台调整为矩形的大小。