Partage
  • Partager sur Facebook
  • Partager sur Twitter

[KeyListener] Comment faire ...

pour écouter en dehors de la fenêtre courante.

Sujet résolu
    15 février 2009 à 4:32:52

    Bonjour tous le monde.
    Alors voilà je suis face à un problème de taille.
    Mes recherches sur le web et sur le forum ne m'ayant mené nulle part, je décide de poster.
    Je voudrais à l'aide de la classe Robot créer une sorte de Bot pour un petit jeu en ligne fait par un amis (juste pour le faire rager). Hors voilà, ce petit déplace l'élément sur lequel je doit cliquer.
    Je me suis dit pas grave, je vais faire un petit MouseListener pour écouter ou est le premier clique puis ensuite cliquer à fond.
    Hors le clique, pas en dehors d'une fenêtre cela me semblait logique. donc voilà ma question :
    Comment faire pour écouter les évènements au clavier lorsqu'on a pas le focus sur la fenêtre java ?


    Si une personne aurait un lien, un élément de réponse ou quelque chose pouvant m'éclairer, ce serait gentil.
    Cordialement, Angemaster.
    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2009 à 10:46:17

      En principe tu ne peux pas en java, mais tu peux tricher avec une fenêtre "discrète" avec des dimension null et qui garde continuellement le focus afin d'enregistrer tes keyListeners et seulement des keyListener car pour un mouseListener tu dois te trouver dans la fenêtre!

      Tu peux aussi regarder les api JNA ou JNI pour récupérer évènements systèmes (au niveau de l'OS) mais là tu perds la portabilité, sans parler de la complexité de ces API...
      • Partager sur Facebook
      • Partager sur Twitter
        15 février 2009 à 11:16:58

        D'accord je vais tester ça et je redit si ça marche et je donnerais éventuellement le code.

        EDIT :
        Voilà petit problème, comment faire pour regagner le focus parcequ'avec requestFocus(); cela ne fonctionne pas, la fenêtre ne retrouve pas le focus ?.
        • Partager sur Facebook
        • Partager sur Twitter
          15 février 2009 à 12:48:11

          =>kayzra:
          ça m'étonne un petit peu =/ je me demande si ils n'auraient pas créé une class justement juste pour ce genre de cas :o
          une class transparente sur laquelle on peut mettre le focus :o
          je vais faire 2,3 recherche à ce sujet :o
          • Partager sur Facebook
          • Partager sur Twitter
            15 février 2009 à 21:45:46

            angemaster : ajoute la méthode : setAlwaysOnTop(boolean alwaysOnTop) ou utilise une JWindow qui elle n'apparait pas dans la barre des taches et est par défaut au dessus des autres fenêtres (alwaysOnTop) celà facilitera la conservation ou récupération du focus, mais je ne crois pas qu'il te soit possible de le bloqué sur elle à moins de forcer :
            Par exemple en créant une sorte de démons, une JWindow de dimension null monté sur un timer et qui l'actualiserai ou en recréerai une toute les secondes par exemple (toute en détruisant le précédente) ainsi tu conserverai le focus, mais ces quand même du bricolage même si ça peux marcher :p

            Il y a sans doute d'autres façon de faire mais se sera sans doute moins simple et plus professionnelle ... :D

            Snooooopy : j'ai pas trop cherché, mais c'est possible ... en tout cas je n'en ai jamais entendu parler ;)
            • Partager sur Facebook
            • Partager sur Twitter
              16 février 2009 à 12:49:27

              Merci à tous, pour vos réponse ...
              Je vais tester vos différentes solutions pour voir, je considère le sujet comme résolu.
              Merci beaucoup pour vos interventions ^^.
              • Partager sur Facebook
              • Partager sur Twitter
                16 février 2009 à 13:36:29

                apres quelques (fraction d') heures de recherches XD
                j'ai pas trouvé :p
                • Partager sur Facebook
                • Partager sur Twitter

                [KeyListener] Comment faire ...

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown