Вот фрагмент кода, который я часто использую. Он возвращает всю доступную область экрана (даже при настройке нескольких мониторов), сохраняя исходные позиции монитора.
public static Rectangle getMaximumScreenBounds() {
int minx=0, miny=0, maxx=0, maxy=0;
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
for(GraphicsDevice device : environment.getScreenDevices()){
Rectangle bounds = device.getDefaultConfiguration().getBounds();
minx = Math.min(minx, bounds.x);
miny = Math.min(miny, bounds.y);
maxx = Math.max(maxx, bounds.x+bounds.width);
maxy = Math.max(maxy, bounds.y+bounds.height);
}
return new Rectangle(minx, miny, maxx-minx, maxy-miny);
}
На компьютере с двумя мониторами full-HD, где левый установлен в качестве основного монитора (в настройках Windows), функция возвращает
java.awt.Rectangle[x=0,y=0,width=3840,height=1080]
При той же настройке, но с правым монитором, установленным в качестве основного монитора, функция возвращает
java.awt.Rectangle[x=-1920,y=0,width=3840,height=1080]