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

Java 如何更改VBox内部的StackPane的大小,并允许VBox拉伸到该大小?,java,user-interface,javafx,javafx-8,Java,User Interface,Javafx,Javafx 8,我有一个StackPane,其中的节点根据StackPane的当前大小调整自身大小。我将此StackPane放置在VBox中,VBox是场景的根。StackPane根据场景的大小进行缩放(即当用户调整窗口大小时进行缩放)。所有这些功能都可以工作,但当程序运行时,程序创建的窗口非常小,用户必须将其调整为更大,才能看到其中的元素 我已尝试设置StackPane的prefWidth和prefHeight,但VBox似乎没有根据StackPane的prefWidth和prefHeight调整自身大小。我

我有一个StackPane,其中的节点根据StackPane的当前大小调整自身大小。我将此StackPane放置在VBox中,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();

做这件事的明智方法是什么?

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