我有一个带有节点的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();
这样做的聪明方法是什么?
答案 0 :(得分:0)
我找到了一个不理想的解决方案,但有效。我创建了一个透明矩形并将其放置在StackPane的背面,并将VBox,场景和舞台调整为矩形的大小。