2017-10-18 7 views
0

J'essaye d'écrire un programme qui amènerait le pointeur de la souris à certaines coordonnées, selon les minutages, quel que soit l'utilisateur. J'ai écrit un code simple en utilisant Robot, mais j'ai rencontré un problème ... J'ai deux moniteurs, et le curseur se déplace mal en fonction de quel moniteur il est en ce moment, s'il vous plaît dites-moi comment résoudre le problème.JAVA Robot mouseMove 2 Moniteurs

Le code ci-dessous est ce que je voulais créer ...

GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment(); 

    GraphicsDevice[] graphicsDevices = graphicsEnvironment.getScreenDevices(); 

    for(int i=0; i < graphicsDevices.length; i++) 
    { 
     System.out.println(graphicsDevices[i]);    
    } 

    try { 

     //Robot robot = new Robot(MouseInfo.getPointerInfo().getDevice());    

     Robot robot = new Robot();    

     while(true) 
     { 
      robot.mouseMove(-1640, -3); 

      robot.mousePress(InputEvent.BUTTON1_MASK); 
      robot.mouseRelease(InputEvent.BUTTON1_MASK); 

      Thread.sleep(10000); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

Répondre

0

Vous devez travailler avec l'idée d'obtenir la résolution et de passer ensuite à partir de là. Vous effectuez mouvements ABSOLUTE et ils fonctionneront différemment dans différentes configurations.

Vous devez utiliser ce code

GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); 
int width = gd.getDisplayMode().getWidth(); 
int height = gd.getDisplayMode().getHeight(); 

à partir de là, vous pouvez:

Robot robot = new Robot(); 
robot.mouseMove (width-10, height+3); 

Vous déplacerez relativement aux spécifications du moniteur. J'espère avoir aidé.