当前位置: 首页 > 知识库问答 >
问题:

sizeToScene调用后的JavaFX阶段宽度/高度

锺离森
2023-03-14

我目前正在编写一个应用程序,我希望有一个800x600像素的最小场景大小。在第一次尝试中,我简单地使用了stage.setminwidthstage.setminheight,但是这些值对整个窗口都有影响,而不仅仅是对场景,所以只显示了场景的7xx x5xx。因此,我搜索了Stage javadoc并找到了sizeToscene,这正是我所需要的,调用后Stage的大小大于800x600,并且场景完全显示为800x600像素。

现在唯一的问题是,这个方法调用没有将舞台宽度和高度保存在舞台本身中,因此我无法将最小宽度和高度设置为sizetoScene计算的当前宽度和高度。

stage.getwidthstage.getheight总是返回nan。

现在我可以对这些值进行硬编码(制作截图并签入paint.net),但这不适用于其他操作系统/版本的Windows/decorators。

我在Windows7,JavaFX2.2,JDK7_21上工作。

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

共有1个答案

容修贤
2023-03-14

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

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

 类似资料:
  • 我已经开始为绘制温度数据编程这个应用程序,当屏幕调整大小时,画布也应该调整大小。它初始化正确,但当我想调整窗口大小时,draw()方法只会根据它绑定的stackpanes高度值调整高度大小,但它将完全忽略宽度。听者甚至不会开火。这我觉得很奇怪。此外,我必须为StackPane设置最小大小,否则将不会绘制任何东西。我没有使用FXML。 编辑我将第58行从setRight()更改为setCenter,

  • 问题内容: 应用后如何检索width和height属性? 例如,旋转后的11x11平方变为17x17(Chrome结果),但是javascript仍返回原始宽度/高度-10x10。 我如何获得17x17? 问题答案: 即使旋转某些东西,它的尺寸也不会改变,因此您需要一个包装纸。尝试用另一个div元素包装div并计算包装器尺寸: 重做: 包装器解决方案无法正常工作,因为包装器未自动调整为内部div的

  • 我有一个字体对象,我需要字体的宽度和高度。我知道getSize()返回字体的高度,因为字体的点号通常是高度,但在确定字体的宽度时,我不知所措。 或者,能够确定字体支持的每个特定字符的宽度也是一个可接受的解决方案。 我的最佳猜测是,宽度是在使用loadFont方法时指定的,但文档没有指定size参数是表示字体的宽度还是高度。 使用的所有字体都是单空格字体,如DejaVu Sans mono、GNU

  • 有人能告诉我调用platform.exit()之后会发生什么吗?我们不能重新启动应用程序吗?

  • 我是JavaFX的新手,我正在编写一个简单的登录应用程序,我想在我的web浏览器中启动它。 我如何获得web浏览器的宽度和高度?是否有一些对象用于此目的,或一个方法,我希望能够调整应用程序的大小,每当浏览器的大小改变。

  • 显然,有两个方法和 是这样的: 我看了这篇文章,但它推荐了一种已弃用的方法: 如何在爪哇fx中获取标签