Pytanie Jak ustawić pozycję myszy w Javie?


Robię niektóre GUI Swing z Java i myślę, że moje pytanie jest dość proste; Jak ustawić pozycję myszy?


17
2018-05-31 04:10


pochodzenie




Odpowiedzi:


Musisz użyć Robot

Ta klasa służy do generowania zdarzeń wejściowych rodzimego systemu do celów automatyzacji testów, demonstracji samozastosowania i innych aplikacji, w których potrzebna jest kontrola myszy i klawiatury. Głównym celem Robota jest ułatwienie automatycznego testowania implementacji platformy Java.

Używanie klasy do generowania zdarzeń wejściowych różni się od publikowania zdarzeń w kolejce zdarzeń AWT lub komponentach AWT, ponieważ zdarzenia są generowane w natywnej kolejce wejściowej platformy. Na przykład, Robot.mouseMove faktycznie przesunie kursor myszy zamiast tylko generować zdarzenia przenoszenia myszy ...


20
2018-05-31 04:14



Wielkie dzięki. Wygląda dokładnie tak, jak potrzebuję. - Ben Lakey


Jak powiedzieli inni, można to osiągnąć za pomocą Robot.mouseMove(x,y). Jednak to rozwiązanie ma awarię podczas pracy w trybie wielu monitorów, ponieważ robot działa z układem współrzędnych ekranu głównego, chyba że użytkownik określi inaczej.

Oto rozwiązanie, które pozwala przekazać współrzędne globalne ekranu z punktami:

public void moveMouse(Point p) {
    GraphicsEnvironment ge = 
        GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] gs = ge.getScreenDevices();

    // Search the devices for the one that draws the specified point.
    for (GraphicsDevice device: gs) { 
        GraphicsConfiguration[] configurations =
            device.getConfigurations();
        for (GraphicsConfiguration config: configurations) {
            Rectangle bounds = config.getBounds();
            if(bounds.contains(p)) {
                // Set point to screen coordinates.
                Point b = bounds.getLocation(); 
                Point s = new Point(p.x - b.x, p.y - b.y);

                try {
                    Robot r = new Robot(device);
                    r.mouseMove(s.x, s.y);
                } catch (AWTException e) {
                    e.printStackTrace();
                }

                return;
            }
        }
    }
    // Couldn't move to the point, it may be off screen.
    return;
}

20
2018-05-19 12:42



Czy działa na platformie Linux? - Akas Antony
@ Daniel - minęły lata odkąd tu odpowiedziałeś, ale dzisiaj znalazłem to i rozwiązałem problem, który miałem przez wiele miesięcy z przypadkowymi kliknięciami myszy zmieniającymi położenie kursora tekstowego. Miałem ochotę po prostu użyć Robot.mouseMove, dopóki nie przeczytam twojego komentarza. O dziwo, dopiero zacząłem używać konfiguracji z wieloma monitorami! Ponieważ używasz klas, z których nie jestem fanem, byłem zszokowany, że wszystko, co musiałem zrobić, to skopiować twój kod, zrobić kilka importów i zadzwonić. Dobra robota! Dzięki!! - DSlomer64


Robot.mouseMove (x, y)


7
2018-05-31 04:34





Śledź ten link : http://www.javaprogrammingforums.com/java-code-snippets-tutorials/214-how-control-your-computers-mouse-using-robot-class.html


4
2018-05-31 04:16





Sprawdź Robot klasa.


2
2018-05-31 04:14