2010-05-31 4 views
6

J'écris une application Java Swing qui doit recevoir une fenêtre pour recevoir les événements de mouvement de la souris lorsque l'application n'est pas activée - pensez-y comme une barre d'outils globale toujours visible s'anime quand la souris passe dessus. De mes recherches jusqu'à présent, j'ai vu que le Java Java JRE ne passe des événements que lorsque l'application a le focus.Mac OSX Java: Recevoir les événements de la souris lorsqu'il n'est pas activé

Cela ne semble pas être une limitation de l'OS, donc j'espérais qu'il y avait une propriété système, une propriété de package d'application ou un appel système qui activait la gestion d'événements non-activés. A défaut, une méthode permettant de capturer globalement les mouvements de souris et de les transmettre à l'application Java.

Merci pour toutes suggestions ...

Edit: Une autre question: Une fois que les événements de déplacement de la souris ont été capturés, comment les nourrir vous en swing afin qu'ils soient traités de la même était que les événements de souris OS natif - en trouvant le composant sous la souris et en lui envoyant un MouseEvent ...

Répondre

2

Ceci n'est pas possible avec du Java pur.
Vous aurez besoin de JNI pour écrire un keylistener global (ou un keyboard hook) en C++ ou dans une autre langue.

Voici quelques sujets sur Global KeyListener:

Le dernier sujet: this était une solution donnée pour OSX.

+0

Merci, j'avais peur que ce soit le cas. Tous les conseils sur le retour des événements capturés à l'application Java, afin que Swing les traite comme s'ils provenaient du système d'exploitation (en trouvant le composant sous la souris et en lui envoyant un MouseEvent). – CuriousPanda

+0

Désolé, mais je n'ai pas de Mac OSX, donc je ne peux pas l'essayer. J'ai juste googlé un peu, avec la connaissance des termes 'JNI' et' Keyboard hook'. –

Questions connexes