IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Simuler le clique droit de la souris


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Simuler le clique droit de la souris
    Bonjour,

    Dans une appli java, je souhaiterais simuler le clique droit de la souris lorsque je clique sur le bouton de gauche, ou alors, quelque chose se rapprochant de cela (simuler un clique droit de la sourie).

    Auriez-vous des idées ou des pistes?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    salut,

    la class java.awt.Robot permet de générer des événements système (souris, clavier, ...).
    Ca devrait coller avec ton besoin.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Effectivement, la class java.awt.Robot peut simuler le clique droit de la souris.

    Par contre, y-a-t'il un moyen de récupérer le clique gauche de façon assez générique, sachant que j'ai déjà pas mal de d'endroit ou le clique de la souris est activé.
    Ca m'éviterais d'avoir à la modifier à chaque fois que le clique gauchge est géré pour envoyer un clique droit.

  4. #4
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Barbidure Voir le message
    Y-a-t'il un moyen de récupérer le clique gauche de façon assez générique, sachant que j'ai déjà pas mal de d'endroit ou le clique de la souris est activé.
    Si par "récupérer", tu entends "détecter", je pense que les fonctionnalités de base de awt te le permettront sans souci.

    Par contre, si tu entends "détecter et inhiber le clic gauche pour le remplacer par un clic droit", ça me semble bien plus compliqué et je ne pourrai pas te répondre, ni en terme de solution technique ni même en terme de faisabilité.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Dans un premier temps, on va dire que c'est la première solution : détecter à coup sur le clique de la souris sans avoir à surcharger les éléments déjà existant.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quel est l'objectif final de tout cela ?

    a++

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    L'objectif finale est assez simple : simuler le clique droit dans une application java sur dalle tactile.

    Si quelqu'un a déjà réalisé cela, je suis preneur de toute explication, lien ou début d'information

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Mais plus précisément ?

    Tu veux remplacer TOUS les clics gauches par des clics droits ? (il n'y aurait donc aucun moyen de faire un clic gauche ???)
    Sur ton application seulement ou pour tout le système ?


    Si cela concerne tous les clics sur ton application, je pense qu'il faudrait se tourner vers l'EventQueue... sinon je ne sais pas.

    a++

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Le problème avec une dalle tactile, c'est que le doigt remplace la souris.
    Toucher l'écran va simuler un clique gauche de la souris.

    En général, pour simuler le clique droit, l'utilisateur doit sélectionner l'objet de son choix et cliquer sur un bouton "clique droit" qui va lancer l'événement.

    Pour avoir un exemple d'utilisation, regarde comment fonctionne le clavier virtuel dans Windows avec l'appel au menu contextuel.

    Voilà, c'est ce mode de fonctionnement que je cherche à simuler.

    Merci d'avance de toute réponse... et en attendant, je vais jeter un coup d'oeil à l'EventQueue

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Barbidure Voir le message
    Voilà, c'est ce mode de fonctionnement que je cherche à simuler.
    Oui mais tu veux le simuler quand ????
    concrètement que devra faire l'utilisateur pour "simuler" ce clic-droit ?

    a++

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Exemple d'utilisation sur une sélection dans une arborescence puis l'appel du menu contextuel sur un menu :

    - l'utilisateur va déplier son arborescence
    - il souhaite "renommer" noeud sélectionné. Mais, pour cela, il doit accéder au menu contextuel accessible normalement par un clique droite de la souris (impossible dans le contexte d'utilisation).
    - il sélectionne le noeud à modifier (ici par pression sur l'écran équivalent à un clique gauche).
    - appuie sur un bouton spécial dans l'interface, qui va envoyer un signal système de "clique droit" à l'élément précédemment sélectionné.

    On utilise tous les jours un fonctionnement équivalent avec la navigation dans une arborescence de fichier avec les touches directionnelles du clavier et la touche "menu" pour l'accès au menu contextuel.


    J'ai d'ailleurs pensé à envoyer un signal équivalent avec la classe Robot (charcode 525), mais ca ne fonctionne pas dans une appli java.

    De plus, l'EventQueue ne répond pas au besoin. Il ne renvoie que le dernier événement. Dans mon cas, celui du clique sur le bouton qui doit simuler le bouton droit de la souris.

  12. #12
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Je ne comprends pas ou est ton problème.
    Tu as déjà la gestion du clic gauche. Lorsque l'utilisateur clic sur un bouton spécial, il passe en mode "clic droit". Il suffit donc simplement de mettre à jour un booléen pour savoir si tu es en "mode gauche" ou "mode droit".
    Lorsque tu gères le clic gauche, tu vérifies simplement dans quel mode tu te trouves avec la valeur booléenne.
    En supposant que le clic droit est à "usage unique", lorsque le clic droit est traité, tu remets le booléen à "mode gauche".
    Ai-je raté quelque chose ?

  13. #13
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 264
    Points : 13 524
    Points
    13 524
    Par défaut
    Moi, je te donne mon avis d'utilisateur:
    Quand je veux faire quelque chose de direct, je clique gauche.
    Quand je cherche une chose indirecte ou poussée, je clique droit.

    Il me semblerait normal que dans le cas d'un écran tactile,
    Quand je veux faire quelque chose de direct, je touche furtivement.
    Quand je cherche de façon insistante une chose, je reste apesenti sur l'écran.

    Donc pour ton application, tu récupères l'événement mousePressed. Si le toucher dure plus de 1 seconde (c'est long, une seconde) tu déclenches le cliques droit. Sinon, c'est un clique gauche.

    C'est ce que je ferais car cela me parait intuitif.

    Pour info je rappelle les actions à traiter dans un mouseListener:
    void mouseClicked(MouseEvent e)
    void mouseEntered(MouseEvent e)
    void mouseExited(MouseEvent e)
    void mousePressed(MouseEvent e)
    void mouseReleased(MouseEvent e)

  14. #14
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    C'est ce que je ferais car cela me parait intuitif.
    Allez, avoue ... c'est toi qui as fait l'IHM de Windows Mobile ?

    Sinon, pour ton problème en question, rien ne t'empêche de garder en mémoire les coordonnées (x,y) du dernier clic gauche.
    Tu n'as alors plus qu'à repositionner la souris, puis émettre un clic droit grâce à la classe Robot.

    Où alors il y a encore un truc qui m'échappe...

  15. #15
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    J'ai vraiment du mal à comprendre ce que tu veux précisément !?


    • Tu veux qu'un bouton de ton interface graphique provoque un clic droit sur le précédent composant avec le focus ?
      Dans ce cas un simple JButton avec un FocusListener (pour récupérer le précédent composant) et dont l'action génère un MouseEvent sur ce composant en question...


    • Tu veux gérer la touche "contextuelle" des claviers Windows ? En utilisant l'InputMap/ActionMap du RootPane tu peux générer un MouseEvent sur le composant ayant le focus.


    • Tu veux transformer les clic-gauches en clic-droits dans certains cas précis (par exemple shift+clic-gauche clic-droit) ? Dans ce cas il faut précisé ce cas précisément, et intercepter les MouseEvent dans l'EventQueue pour les transformer à la volé...


    • Il doit y avoir encore un bon nombre d'autre solution possible...
      [edit] D'ailleurs pendant que je postais Flodelarab a soumis une autre solution se basant sur le temps du clic...




    Citation Envoyé par Barbidure Voir le message
    De plus, l'EventQueue ne répond pas au besoin.
    Justement je n'ai toujours pas compris quel était le besoin... Donc je vois mal comment on pourrait y répondre




    Tu as "la tête dans le guidon", tu connais ton appli par coeur, et tu sais exactement ce que tu veux... Mais ce n'est pas mon cas donc difficile de t'aider !


    a++

Discussions similaires

  1. clique droit de la souris et datagridview
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 12
    Dernier message: 04/11/2009, 21h19
  2. interdir le clique droit de la souris sur un champ
    Par john_wili dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/08/2009, 16h04
  3. Clique droit de la souris VB.Net 2005
    Par badrel dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/01/2009, 17h07
  4. [swing]Probleme avec clique droit de la souris
    Par issou dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 22/03/2006, 17h25
  5. Ajout de menu perso sur clique droit de la souris !!
    Par Kyp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/12/2005, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo