调整sizeToScene之后的JavaFX阶段宽度/高度

时间:2013-06-23 21:26:17

标签: java javafx-2

我正在编写一个我希望最小场景大小为800x600像素的应用程序。 在第一次尝试时,我只使用stage.setMinWidthstage.setMinHeight,但这些值计算整个窗口而不仅仅是场景,因此只显示场景的7xx x 5xx。 所以我搜索了舞台javadoc并找到sizeToScene这正是我需要的,在调用后舞台大小大于800x600并且场景完全显示为800x600像素。

现在唯一的问题是此方法调用不会保存舞台本身的舞台宽度和高度,因此我无法将最小宽度和高度设置为sizeToScene计算的当前宽度和高度

stage.getWidthstage.getHeight始终返回NaN。

我可以硬编码这些值,因为我得到它们(制作截图并在paint.net中检查)但这不适用于其他操作系统/版本的Windows /装饰器。

我正在使用Windows 7,JavaFX 2.2,JDK 7_21。

有人知道如何在方法调用后获得宽度和高度吗? 我希望你明白我的问题是什么,否则告诉我。如果你需要代码,我可以给你,但我想你不需要它。 谢谢!

1 个答案:

答案 0 :(得分:4)

舞台的宽度和高度值在舞台显示后计算。您可以在显示的阶段后设置这些值的最小值:

@Override
public void start(Stage primaryStage) {
    StackPane root = new StackPane();
    Scene scene = new Scene(root, 800, 600);
    primaryStage.setScene(scene);

    System.out.println("before sceneW " + scene.getWidth());
    System.out.println("before sceneH " +  scene.getHeight());
    System.out.println("before stageW " + primaryStage.getWidth());
    System.out.println("before stageH " + primaryStage.getHeight());

    primaryStage.show();

    System.out.println("after sceneW " + scene.getWidth());
    System.out.println("after sceneH " +  scene.getHeight());
    System.out.println("after stageW " + primaryStage.getWidth());
    System.out.println("after stageH " + primaryStage.getHeight());

    primaryStage.setMinWidth(primaryStage.getWidth());
    primaryStage.setMinHeight(primaryStage.getHeight());
}

sizeToScene()类似于Swing(AWT)pack()。我想你在这里不需要它。