Clic souris hors fenêtre

jbr17 Messages postés 5 Date d'inscription jeudi 1 décembre 2011 Statut Membre Dernière intervention 1 décembre 2011 - 1 déc. 2011 à 14:22
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 2 déc. 2011 à 09:21
Bonjour,

Je souhaite développer un petit programme en Java avec Eclipse (jdk 1.6) pour calculer la distance parcourue, la vitesse instantanée, et enfin le nombre de clic de souris.
Tout fonctionne bien, mais je ne sais pas comment prendre en compte les clics en dehors de mon application.

J'ai cherché sur de nombreux sites, mais je n'ai pas trouver. Cela doit être simple mais...comment faire ?

Merci d'avance

10 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
1 déc. 2011 à 14:36
Bonjour,

Je ne suis pas certain que ce soit très simple. Seuls les composants qui ont le focus savent si un événement click est déclenché. Je dirais que ce n'est pas possible. En tout cas, je ne vois pas comment faire ca.

J'espère que d'autres seront plus inspirés que moi.
0
jbr17 Messages postés 5 Date d'inscription jeudi 1 décembre 2011 Statut Membre Dernière intervention 1 décembre 2011
1 déc. 2011 à 14:45
Merci de cette réponse rapide !
N'est-il pas possible de créer une (deuxième) fenêtre transparente sur tout l'écran et de lui attribuer le focus ?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
1 déc. 2011 à 14:54
Si, J'y ai pensé aussi mais, le problème est que tu vas intercepter les cliques. Donc, tu pourras compter le nombre de clic mais par contre, l'utilisateur ne pourra plus rient faire.

A la limite, tu peux utiliser la classe Robot pour simuler un clic à l'endroit ou l'utilisateur a cliqué la première fois en déplaçant ou en réduisant ta fenêtre (une JWindow).

Par contre, ce n'est pas très pro cette solution, ca ressemble plus à une bricole.

De plus, java a un peu de mal avec la transparence. Tu risques d'avoir certaines difficultés pour faire une JWindow transparente. Je pense que tu devras utiliser la classe Robot pour faire des captures d'écran et les reporter sur ta JWindow.

Je suis intéressé si tu trouves une solution.
0
jbr17 Messages postés 5 Date d'inscription jeudi 1 décembre 2011 Statut Membre Dernière intervention 1 décembre 2011
1 déc. 2011 à 15:00
C'est plus complexe qu'il n'y parait !

Est n'est-il pas possible d'attribuer à la fenêtre en cours un attribut qui lui dirait : ta zone active occupe tout l'écran ? Dans la classe JFrame par exemple ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
1 déc. 2011 à 15:50
Et non désolé.

Je dirais que tu es face à une limite technique.
0
jbr17 Messages postés 5 Date d'inscription jeudi 1 décembre 2011 Statut Membre Dernière intervention 1 décembre 2011
1 déc. 2011 à 15:56
D'accord, je te remercie Julien pour ces infos. Si Par hasard quelqu'un trouve la solution... Et si je trouve une parade, je la posterais !

Merci encore
0
jbr17 Messages postés 5 Date d'inscription jeudi 1 décembre 2011 Statut Membre Dernière intervention 1 décembre 2011
1 déc. 2011 à 16:03
Tu as dis :
"A la limite, tu peux utiliser la classe Robot pour simuler un clic à l'endroit où l'utilisateur a cliqué la première fois en déplaçant ou en réduisant ta fenêtre (une JWindow). "

Peut-tu m'expliquer autrement ? Je ne comprends pas très bien.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
2 déc. 2011 à 07:58
La classe Robot te permet de simuler un clic. Si tu ne sais pas comment faire, recherche sur internet, c'est tout bête.

Si tu utilises une JWindow de taille 5x5 transparente que tu places sous la souris et lorsque l'utilisateur clique : tu récupères les coordonnées du pointeur, tu déplaces ta JWindow et tu cliques en utilisant la classe Robot.

De cette manière, tu peux intercepter l'événement clic sur ta JWindow et compter le nombre de clic puis reporter le clic effectué sur ton PC. Ensuite, tu replaces la JWindow.

Mais je n'ai jamais fais ca. Et je pense que ca sera assez difficile.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 24
2 déc. 2011 à 09:15
Bonjour.
Je ne pense pas qu'il existe de solution toute faite en java.
En général, faut faire un programme en c/c++, et l'appeler en java via JNI. Par exemple comme indiqué par
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
2 déc. 2011 à 09:21
Oui, c'est vrai que ce que je te propose n'est pas une solution. c'est une bricole inélégante et lourde.
0