Automatice los eventos del mouse usando Java Robot Class

Robot es parte del paquete java.awt. La clase de robot se utiliza básicamente para generar eventos de entrada del sistema nativo con el fin de realizar demostraciones autoejecutables, automatización de pruebas y otras aplicaciones en las que se utiliza el control del mouse y el teclado. 
La clase de robot genera eventos que se pueden usar para controlar el mouse, el teclado y se pueden usar para tomar capturas de pantalla de la pantalla. En este artículo, implementaremos Java Robot para mover o arrastrar el mouse a una ubicación específica. 
Métodos utilizados: 
 

  1. mouseMove(int x, int y) : mueve el mouse a una ubicación específica de la pantalla
  2. keyPress(int k) : presiona una tecla determinada con un código de tecla especificado
  3. keyRelease(int k) : libera una clave determinada con un código clave especificado
  4. mousePress(int b) : presiona uno o más botones del mouse.
  5. mouseRelease(int b) : Libera uno o más botones del mouse.

Programa 1: programa Java para mover un mouse desde la ubicación inicial a una ubicación específica 
 

Java

// Java program to move a mouse from the initial
// location to a specified location
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
class robomouse extends Frame implements ActionListener {
    // Frame
    static JFrame f;
 
    // textField
    static TextField x, y;
 
    // default constructor
    robomouse()
    {
    }
 
    // main function
    public static void main(String args[])
    {
        // object of class
        robomouse rm = new robomouse();
 
        // create a frame
        f = new JFrame("robomouse");
 
        // set the frame to close on exit
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        // create textfield
        x = new TextField(7);
        y = new TextField(7);
 
        // create a button
        Button b = new Button("OK");
 
        // add actionListener
        b.addActionListener(rm);
 
        // create a panel
        Panel p = new Panel();
 
        // add items to panel
        p.add(x);
        p.add(y);
        p.add(b);
 
        f.add(p);
 
        // setsize of frame
        f.setSize(300, 300);
 
        f.show();
    }
 
    // if button is pressed
    public void actionPerformed(ActionEvent e)
    {
        try {
            Robot r = new Robot();
            int xi1, yi1, xi, yi;
 
            // get initial location
            Point p = MouseInfo.getPointerInfo().getLocation();
            xi = p.x;
            yi = p.y;
 
            // get x and y points
            xi1 = Integer.parseInt(x.getText());
            yi1 = Integer.parseInt(y.getText());
            int i = xi, j = yi;
 
            // slowly move the mouse to defined location
            while (i != xi1 || j != yi1) {
                // move the mouse to the other point
                r.mouseMove(i, j);
 
                if (i < xi1)
                    i++;
                if (j < yi1)
                    j++;
 
                if (i > xi1)
                    i--;
                if (j > yi1)
                    j--;
 
                // wait
                Thread.sleep(30);
            }
        }
        catch (Exception evt) {
            System.err.println(evt.getMessage());
        }
    }
}

Producción : 
 

Programa 2: programa Java para arrastrar un mouse de una ubicación a otra ubicación 
 

Java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class robomouse1 extends Frame implements ActionListener {
    // Frame
    static JFrame f;
 
    // textField
    static TextField x, y, x1, y1;
 
    // default constructor
    robomouse1()
    {
    }
 
    // main function
    public static void main(String args[])
    {
        // object of class
        robomouse1 rm = new robomouse1();
 
        // create a frame
        f = new JFrame("robomouse");
 
        // set the frame to close on exit
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        // create textfield
        x = new TextField(7);
        y = new TextField(7);
 
        x1 = new TextField(7);
        y1 = new TextField(7);
 
        // create a button
        Button b = new Button("OK");
 
        // add actionListener
        b.addActionListener(rm);
 
        // create a panel
        Panel p = new Panel();
 
        // create labels
        Label l, l1;
 
        l = new Label("from");
        l1 = new Label("to");
 
        // add items to panel
        p.add(l);
        p.add(x);
        p.add(y);
        p.add(l1);
        p.add(x1);
        p.add(y1);
        p.add(b);
 
        f.add(p);
 
        // setsize of frame
        f.setSize(600, 300);
 
        f.show();
    }
 
    // if button is pressed
    public void actionPerformed(ActionEvent e)
    {
        try {
            Robot r = new Robot();
            int xi, yi, xi1, yi1;
 
            // get x and y points
            xi = Integer.parseInt(x.getText());
            yi = Integer.parseInt(y.getText());
            xi1 = Integer.parseInt(x1.getText());
            yi1 = Integer.parseInt(y1.getText());
 
            // move the mouse to that point
            r.mouseMove(xi, yi);
 
            // press the mouse
            r.mousePress(InputEvent.BUTTON1_MASK);
 
            int i = xi, j = yi;
 
            // slowly drag the mouse to defined location
            while (i < xi1 || j < yi1) {
                // move the mouse to the other point
                r.mouseMove(i, j);
 
                if (i < xi1)
                    i++;
                if (j < yi1)
                    j++;
 
                // wait
                Thread.sleep(30);
            }
 
            // wait
            Thread.sleep(4000);
 
            // press the mouse
            r.mouseRelease(InputEvent.BUTTON1_MASK);
        }
        catch (Exception evt) {
            System.err.println(evt.getMessage());
        }
    }
}

Producción : 
 

Nota: es posible que el código no se ejecute en un compilador en línea; utilice un IDE sin conexión.
 

Publicación traducida automáticamente

Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *