В зависимости от настроек вашего 2-х мониторов, слева или справа от центрального экрана, вы можете просто использовать отрицательное значение для x, чтобы переместить его на левый монитор, или значение, превышающее ширину центрального монитора, чтобы переместить его в правый монитор.
Осторожно: если у вас другая высота мониторов, убедитесь, что значение y тоже находится в пределах его.
Например, если у вас есть монитор слева от центрального экрана:
JFrame f = new JFrame();
f.getContentPane().add(new JLabel("Hello world"));
f.pack();
f.setVisible(true);
f.setLocation(0, 200);
JFrame f2 = new JFrame();
f2.getContentPane().add(new JLabel("Hello world 2"));
f2.pack();
f2.setVisible(true);
f2.setLocation(-400, 500);
Мониторы вертикально сложены влево как упражнение для разработчика. :)
Конечно, если вы не хотите жестко кодировать эти значения, есть способ найти различные размеры экрана и смещения по x и y (если, например, не тот же размер):
GraphicsDevice[] gds = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
for (GraphicsDevice gd : gds) {
for(GraphicsConfiguration gc : gd.getConfigurations()) {
Rectangle bounds = gc.getBounds();
System.out.println("x,y: "+bounds.getX() + "," + bounds.getY() + " width,height: " + bounds.getWidth() + "x" + bounds.getHeight());
}
}
Для меня сейчас, с двумя экранами, с одним большим экраном 27 "в центре и одним 24" слева:
x,y: 0.0,0.0 width,height: 2560.0x1440.0
x,y: -1920.0,232.0 width,height: 1920.0x1200.0
Пояснение:
Левая сторона левого экрана - x=-1920