Java 如何确保应用程序窗口在启动时可见?
我有一个应用程序,它通常在双监视器设置上运行。我还保存窗口退出时的当前大小和位置,并在启动应用程序时再次加载 我的问题来自其中一个监视器被移除或分辨率改变的情况。如果我保存窗口的x和y位置,并且它最后一次在现在不存在的监视器上可见,那么当程序再次启动时,它将不在视图中 下面是我用来在Main.java中编辑的代码:Java 如何确保应用程序窗口在启动时可见?,java,javafx,Java,Javafx,我有一个应用程序,它通常在双监视器设置上运行。我还保存窗口退出时的当前大小和位置,并在启动应用程序时再次加载 我的问题来自其中一个监视器被移除或分辨率改变的情况。如果我保存窗口的x和y位置,并且它最后一次在现在不存在的监视器上可见,那么当程序再次启动时,它将不在视图中 下面是我用来在Main.java中编辑的代码: double x = Settings.getWindowX(); double y = Settings.getWindowY(); double h = Settings.get
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重置为100100
我不确定从何处开始。允许您检查当前配置范围内的值
例如,要测试是否存在与配置设置中保存的边界相交的物理图形设备,可以执行以下操作:
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);
}
小挑剔:是“确保”而不是“保险”,我总是把这些弄混。谢谢你花时间指出:)已经更正了。@Travis我想这在英国英语中才是真的;在美国,英语(也)被认为是“确保”的有效替代拼写(尽管我实际上不喜欢这个意义上的“保险”)。