gpt4 book ai didi

java - 最大化javafx后舞台最大化场景

转载 作者:行者123 更新时间:2023-12-02 09:39:05 25 4
gpt4 key购买 nike

当我调整窗口大小时,舞台以及包含的场景都会正确调整大小,但是当我单击最大化按钮时,只有舞台最大化,而不是内部场景最大化。更糟糕的是,没有手动更改场景高度和宽度的方法(这些方法是只读的)。我还尝试创建新场景并将旧场景中的根元素放入其中,但随后我得到一个异常(exception),即两个场景不能具有相同的根元素。谢谢!

最小可重现示例:

@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 200, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();

primaryStage.maximizedProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
System.out.println("stage width: " + primaryStage.getWidth());
System.out.println("scene width: " + scene.getWidth());
}
});

primaryStage.widthProperty().addListener((obs, oldVal, newVal) -> {
System.out.println("stage width: " + primaryStage.getWidth());
System.out.println("scene width: " + scene.getWidth());

});
}

我首先稍微调整窗口大小,然后单击最大化。这是输出的屏幕截图: output

我标记了点击最大化的那一刻。谢谢!

最佳答案

正如@Slaw在评论中指出的那样,场景在舞台之后调整大小,因此监听舞台尺寸变化将不起作用。我应该听场景变化。所以正确的代码如下:

@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 200, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();

scene.heightProperty().addListener((observable, oldValue, newValue) -> {
System.out.println("stage height: " + primaryStage.getHeight());
System.out.println("scene height: " + scene.getHeight());
});

scene.widthProperty().addListener((obs, oldVal, newVal) -> {
System.out.println("stage width: " + primaryStage.getWidth());
System.out.println("scene width: " + scene.getWidth());
});
}

非常感谢! :D

关于java - 最大化javafx后舞台最大化场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250891/

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