gpt4 book ai didi

sizeToScene 调用后的 JavaFX 舞台宽度/高度

转载 作者:行者123 更新时间:2023-12-02 07:49:24 26 4
gpt4 key购买 nike

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

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

stage.getWidthstage.getHeight 始终返回 NaN。

现在我可以对这些值进行硬编码(制作屏幕截图并在 Paint.net 中检查),但这不适用于其他操作系统/版本的 Windows/装饰器。

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

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

最佳答案

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

@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() 类似。我认为你在这里不需要它。

关于sizeToScene 调用后的 JavaFX 舞台宽度/高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17265493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com