import java.awt.Frame; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.MouseInfo; import java.awt.Point; import java.awt.PointerInfo; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ /** * * @author andrei-eremeev */ public class TwoScreenTest { public static void waitForIdle() { ((sun.awt.SunToolkit) Toolkit.getDefaultToolkit()).realSync(); } public static void main(String[] args) { try { Robot robot = new Robot(); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gd = ge.getScreenDevices(); Frame[] frames = new Frame[gd.length]; for (int i = 0; i < gd.length; ++i) { Rectangle bounds = gd[i].getDefaultConfiguration().getBounds(); robot.mouseMove(bounds.x, bounds.y); frames[i] = new Frame(); frames[i].setSize(200, 200); frames[i].setLocation(bounds.x, bounds.y); frames[i].setVisible(true); waitForIdle(); PointerInfo pInfo = MouseInfo.getPointerInfo(); System.out.println("[EXPECTED] : " + gd[i] + " [ACTUAL] : " + pInfo.getDevice()); Point location = pInfo.getLocation(); System.out.println("[EXPECTED] : (" + bounds.x + "; " + bounds.y + ") [ACTUAL] : (" + location.x + "; " + location.y + ")"); } Thread.sleep(5000); for (Frame f : frames) { f.dispose(); } } catch (Exception ex) { ex.printStackTrace(); } } }