gpt4 book ai didi

JavaFX:在最大化之前获取阶段的边界

转载 作者:行者123 更新时间:2023-11-30 06:25:10 25 4
gpt4 key购买 nike

我想在用户最大化阶段之前获取/记住阶段的边界。我注意到我可以将事件处理程序添加到舞台的最大化属性中,但这对我没有帮助。此时舞台已最大化,并且 getX()getWidth() 已报告舞台最大化后的位置或大小。

myStage.maximizedProperty().addListener((observable, oldValue, newValue) -> {
double x = myStage.getX(); // already too late, x has changed
...

如何在舞台大小发生变化之前获取舞台的边界?使用当前的 API 是否可以做到这一点?

PS:更大的目标是记住舞台位置、状态和屏幕。如果用户定位舞台,最大化它,退出应用程序,然后再次重新启动它,那么我希望舞台的定位就像用户退出应用程序之前一样。这意味着我需要首先将新舞台放置在之前未最大化的位置,然后最大化它,以恢复之前的状态。但在不知道尺寸的情况下,最大化这条接缝是不可能做到的。

最佳答案

当我们按下按钮最大化 JavaFX 窗口时,首先舞台被最大化,然后其宽度和高度属性被更新。因此,只有在舞台未最大化时才应记住舞台的尺寸。

例如,在我们的项目中,我们将舞台尺寸保存在配置文件中,也遇到了类似的问题。解决办法如下:

stage.widthProperty().addListener((obs, oldVal, newVal) -> {
if (!stage.isMaximized()) {
config.setWidth(newVal.intValue());
}
});

stage.heightProperty().addListener((obs, oldVal, newVal) -> {
if (!stage.isMaximized()) {
config.setHeight(newVal.intValue());
}
});

stage.maximizedProperty().addListener((obs, oldVal, newVal) -> {
config.setMaximized(newVal));
});

关于JavaFX:在最大化之前获取阶段的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47318718/

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