我有一个通常在双显示器设置上运行的应用程序。我还会在退出时保存窗口的当前大小和位置,并在启动应用程序时再次加载它。
我的问题来自其中一个显示器被移除或分辨率改变的情况。如果我保存窗口的x和y位置,并且它最后在现在缺少的监视器上可见,则在程序再次启动时它将不可用。
以下是我在Main.java中使用的代码:
double x = Settings.getWindowX();
double y = Settings.getWindowY();
double h = Settings.getWindowH();
double w = Settings.getWindowW();
primaryStage.setScene(mainScene);
primaryStage.setX(x);
primaryStage.setY(y);
primaryStage.setWidth(w);
primaryStage.setHeight(h);
我的目标是检查窗口是否在可用监视器的可见边界内,如果没有,则将x,y重置为100,100。
我不知道从哪里开始。
答案 0 :(得分:2)
Screen
API允许您检查当前配置范围内的值。
E.g。要测试是否有物理图形设备与配置设置中保存的边界相交,您可以执行以下操作:
double x = Settings.getWindowX();
double y = Settings.getWindowY();
double h = Settings.getWindowH();
double w = Settings.getWindowW();
primaryStage.setScene(mainScene);
if (Screen.getScreensForRectangle(x, y, w, h).isEmpty()) {
// no screen intersects saved values...
// just center on primary screen:
primaryStage.centerOnScreen();
} else {
primaryStage.setX(x);
primaryStage.setY(y);
primaryStage.setWidth(w);
primaryStage.setHeight(h);
}