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

Langage Java Discussion :

Evenements clavier et souris simultanément


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 49
    Par défaut Evenements clavier et souris simultanément
    Bonjour,

    Ma question va être assez simple mais je ne trouve pas la syntaxe qui me convient.

    J'ai une classe qui hérite de JComponent et implémente les interfaces MouseInputListener et KeyListener.

    Dans mon constructeur, j'ai tout ce qu'il faut pour écouter les événements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		addMouseListener(this);
    		addMouseMotionListener(this);
    		addKeyListener(this);
    J'arrive à écouter un événement clavier et un événement souris indépendamment.

    Maintenant, ce que je voudrais faire, c'est écouter la souris et le clavier en même temps. En fait, quand l'utilisateur va cliquer quelque part, il va se passer quelque chose, et quand il va cliquer quelque part et qu'il aura en même temps, une touche clavier enfoncé, il se passera autre chose.

    En consultant google et des forums, j'ai trouvé la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void mousePressed(MouseEvent e) {
    ...
    if ((e.getModifiers() & KeyEvent.CTRL_MASK) !=0) 
        //bouton CTRL appuyé en même temps que le clic
    ...
    }
    Le code marche bien mais je ne voudrais pas utiliser CTRL mais une lettre du clavier. Je n'arrive pas à trouver la bonne syntaxe.

    Par avance merci.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    il n'y a pas de bonne syntaxe. C'est a toi d'enregistre dans ta classe que la touche est enfoncée (tu le sais pas le keylistener) et d'en tenir compte dans ton MouseListener.

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 49
    Par défaut
    C'est à dire, de mettre un sorte de booleen en attribut privé de la classe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private boolean keyAPressed;
    et de le mettre à true quand 'A' est pressée et à false quand elle est relachée?

  4. #4
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Pour être plus évolutif tu peux utiliser un set de "key codes" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set<Integer> keyPressed = new HashSet<Integer>();
     
    ... keyPressed...
    keyPressed.add(keyCode);
     
    ... keyReleased...
    keyPressed.remove(keyCode);
     
    public boolean isKeyPressed(int keyCode) {
       return keyPressed.contains(keyCode);
    }

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par Peps0u Voir le message
    C'est à dire, de mettre un sorte de booleen en attribut privé de la classe?
    oui

  6. #6
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 49
    Par défaut
    Merci pour vos réponses, même si je pensais qu'une méthode plus élégante existait.

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Citation Envoyé par Peps0u Voir le message
    Merci pour vos réponses, même si je pensais qu'une méthode plus élégante existait.
    La méthode d'Hervé est assez "élégante", difficile de faire mieux et pratique et pas besoin d'avoir 1 variable pour chaque touche puisque c'est contenu dans une list (ca revient au meme mais c'est un peu plus propre).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bloquer les evenements clavier et souris
    Par Ignat1us dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 28/04/2009, 10h01
  2. Evenement Clavier et souris Opengl
    Par Suryavarman dans le forum wxWidgets
    Réponses: 3
    Dernier message: 19/12/2006, 02h18
  3. [GEF] Evenements liés à la souris/clavier
    Par Garak dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 18/09/2006, 18h35
  4. Enregistrement des evenements CLAVIER/SOURIS
    Par sam.fet dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2006, 13h23
  5. Ecouter les evenements clavier et souris
    Par init dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/11/2004, 21h02

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