Bonjour,
Voila, mon problème n'est à priori pas un problème de programmation Java, mais je viens tout de même poster ici en espérant trouver une solution de contournement.
Contexte:
Pour vous mettre dans le contexte, je développe une application Java permettant de piloter un robot (avant/arrière/droite/gauche). Dans une IHM Swing, j'ai donc tout simplement 4 Jbuttons pour piloter le robot.
Sur chacun des boutons, j'ai le code suivant:
Qui peut se traduire par: dés que je clique sur le bouton, j’appelle ma fonction jButtonForwardMousePressed et dés que je relâche le clique j’appelle ma fonction jButtonForwardMouseReleased.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void mouseReleased(MouseEvent evt) { jButtonForwardMouseReleased(evt); } public void mousePressed(MouseEvent evt) { jButtonForwardMousePressed(evt); }
Tous marche très bien lorsque je contrôle le robot depuis mon portable.
Par contre l'environnement cible d'exécution du programme est un UMPC Viliv S5 avec un écran tactile sous Windows 7.
Sur le Viliv S5, lorsque je pose mon doigt sur le bouton, l'event mousePressed est bien déclenché, mais quelques micro secondes plus tard l'event mouseReleased est déclenché (pourtant le bouton est toujours enfoncé), arrêtant mon robot.
La problème:
Après un peu d’investigation, j'ai compris que la fonctionnalité "press and hold" de Windows 7 se déclenche sur un long clique gauche sur le touchscreen. Ce long clique gauche est transformé automatiquement en un clique droit.
En gros, pour reproduire cela avec une souris, c'est comme si: on cliquait sur le bouton avec le bouton gauche de la souris (et on reste appuyé), puis cliquait sur le bouton droit (tout en restant toujours appuyé sur le bouton gauche) et enfin on relâchait le bouton droit (toujours le bouton gauche appuyé). Java prend donc en compte le relâchement du clique droit et déclenche mouseReleased
La solution?
J'ai bien essayé de désactivé cette option sous Windows 7 mais pas moyen (aucune option).
J'ai tenté de modifier une clef de registre mais rien non plus.
Je viens donc demander votre aide. Piste: Y'a t'il moyen de reconnaître quel bouton de souris à été relâche droite ou gauche?
Merci beaucoup! et bonne fêtes
Partager