查找某个位置是否存在于任何可用屏幕上 (Java)
Finding if a location exists on any available screen (Java)
我在笔记本电脑上使用一个小型(自制)Java 应用程序。此应用程序会记住上次打开它在屏幕上的位置,并在我下次启动它时打开它。
这在一个特定案例中会导致问题;有时我使用一个屏幕(远程工作时,因为 COVID),有时我使用两个屏幕(在办公室时)。使用两个屏幕时我想要框架的地方在我的 辅助 屏幕上,这使得应用程序在我只使用一个屏幕时在屏幕外启动。
有什么方法可以检查某个位置是否在“屏幕上”?我希望能够检查该框架是否在任何可用屏幕上,如果不在,我可以将其移动到一个屏幕上。任何人都知道如何做到这一点,最好不必导入任何外部库?
你可以做的是获取监视器边界并检查位置是否在屏幕边界内,并迭代所有监视器列表,如果它不在任何监视器中那么你可以设置 window 返回主屏幕,您可以使用此代码连接显示器:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = ge.getScreenDevices();
通过这个你可以创建一个方法来查看它是否在特定的屏幕上:
public static boolean isVisibleOnScreen(int locX, int locY, int screenIndex) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = ge.getScreenDevices();
// Check if there index is valid
if (screenIndex > -1 && screenIndex < devices.length) {
Rectangle bounds = devices[screenIndex].getDefaultConfiguration().getBounds();
// Check if within screen boundries
if (bounds.contains(locX, locY)) {
return true;
}
}
return false;
}
我在笔记本电脑上使用一个小型(自制)Java 应用程序。此应用程序会记住上次打开它在屏幕上的位置,并在我下次启动它时打开它。
这在一个特定案例中会导致问题;有时我使用一个屏幕(远程工作时,因为 COVID),有时我使用两个屏幕(在办公室时)。使用两个屏幕时我想要框架的地方在我的 辅助 屏幕上,这使得应用程序在我只使用一个屏幕时在屏幕外启动。
有什么方法可以检查某个位置是否在“屏幕上”?我希望能够检查该框架是否在任何可用屏幕上,如果不在,我可以将其移动到一个屏幕上。任何人都知道如何做到这一点,最好不必导入任何外部库?
你可以做的是获取监视器边界并检查位置是否在屏幕边界内,并迭代所有监视器列表,如果它不在任何监视器中那么你可以设置 window 返回主屏幕,您可以使用此代码连接显示器:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = ge.getScreenDevices();
通过这个你可以创建一个方法来查看它是否在特定的屏幕上:
public static boolean isVisibleOnScreen(int locX, int locY, int screenIndex) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = ge.getScreenDevices();
// Check if there index is valid
if (screenIndex > -1 && screenIndex < devices.length) {
Rectangle bounds = devices[screenIndex].getDefaultConfiguration().getBounds();
// Check if within screen boundries
if (bounds.contains(locX, locY)) {
return true;
}
}
return false;
}