Java capture souris en dehors de JFrame

Bonjour, comment obtenir les etats du clic de souris en dehors de ma fenêtre en Java. Merci

Vous pouvez utiliser la classe AWTEventListener comme suit:

import java.awt.AWTEvent;
import java.awt.MouseInfo;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;

import javax.swing.JFrame;

public class Exemple {
    public static void main(String[] args) {
        Toolkit.getDefaultToolkit().addAWTEventListener(
          new Listener(), AWTEvent.MOUSE_EVENT_MASK | AWTEvent.FOCUS_EVENT_MASK);
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    private static class Listener implements AWTEventListener {
        public void eventDispatched(AWTEvent event) {
            System.out.print(MouseInfo.getPointerInfo().getLocation() + " | ");
            System.out.println(event);
        }
    }
}

Là vous allez capturer les coordonnés de la souris et l’évènement déclenché:

java.awt.Point[x=256,y=145] | java.awt.event.MouseEvent[MOUSE_EXITED, ...
java.awt.Point[x=546,y=122] | java.awt.FocusEvent[FOCUS_LOST, ...

Le deuxième point est en dehors de JFrame.

1 « J'aime »

Merci .
Mais est ce que c est possible de capturer le souris auand on clic une autre fenetre par exemple quand on clic sur Mozila. Merci

Oui, c’est possible, essayez le code ci-dessus.

1 « J'aime »

Oui c est posible mais il fais vapture deux foi puis il s arrete

C’est en fait assez intéressant, mais cela ne rapportera bien sûr que le premier clic en dehors de l’application, celui qui cause réellement la perte de focus. Après cela, aucun autre clic ne sera rapporté, à moins que l’application ne reprenne le focus. Vous devez checker s’il est possible de réagir à un événement FOCUS_LOST avec une demande de focus?

Essayez le code suivant:

import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;

PointerInfo inf = MouseInfo.getPointerInfo();
Point p = inf.getLocation();

p.x et p.y affiche les coordonnées à l’extérieur de votre JFrame.