Partage
  • Partager sur Facebook
  • Partager sur Twitter

KeyEvent

KeyEvent - Condition

Sujet résolu
    17 mars 2012 à 19:14:33

    Bonjour,
    J'ai chercher de l'aide sur internet et sur ce site mais je n'ai pas trouvé de réponse à ma question :
    Je voulais savoir comment faire pour créer une boucle qui exécute un programme tant que l'on n'appuie pas sur une touche précise (en l'occurence "haut" "bas" "entrer")?
    J'ai essayé avec une boucle do{ ... }while mais cela ne marche pas, peut-être que je ne la place pas au bon endroit.

    Voici mon code :

    public class Fenetre extends JFrame{
        public Fenetre(){
            // mon programme
            this.addKeyListener(new Cl());
        }
    }
    class Cl implements KeyListener {
        public void keyTyped(KeyEvent e) {}
        public void keyPressed(KeyEvent e) {}
        public void keyReleased(KeyEvent e) {}
    }
    




    Pouvez-vous m'aider ?
    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      17 mars 2012 à 21:53:23

      Une solution bête et méchante serais de mettre une variable static.
      Genre:

      public static boolean touche=false;
      


      Dans ton prog tu fais:
      while(!touche){
      //prog
      }
      


      Et lors de l'événement d'une touche tu fais:

      public void keyPressed(KeyEvent e) {
      touche=true;
      }
      


      Si j'ai bien compris ton problème ceci devrais être la soluce.

      edit: petit oubli de balises... :-°
      • Partager sur Facebook
      • Partager sur Twitter
        17 mars 2012 à 23:32:30

        C'est une solution mais la boucle infinie va manger au moins 50% de ton processeur pour rien.
        Une autre solution est d'utiliser la fonction statique exit() de la classe System, comme ça:

        public void keyReleased(KeyEvent e) {
             System.exit(0);
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
        ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
          18 mars 2012 à 0:08:52

          Le message qui suit est une réponse automatique.
          Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
          Nous sommes néanmoins ouvert à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


          Merci d'utiliser les balises de code


          Bonjour,

          Les forums du Site du Zéro disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
          Tu as posté un code source sans utiliser cette fonctionnalité. Pourrais-tu éditer ton message afin d'ajouter ces balises ? Pour cela, sélectionne ton code à colorer et utilise le bouton Image utilisateur afin de choisir la coloration adaptée. Veille à bien choisir le langage de programmation afin que la coloration soit pertinente.

          De plus, veille à ce que ton code soit correctement indenté.

          Afin de ne pas surcharger le sujet, ne poste pas ton code coloré dans un nouveau message mais édite le premier (grâce au bouton Image utilisateur).

          Cela aura pour effet de "colorer" ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses.

          Voici un exemple de code non coloré (mauvais exemple) :
          int main(int argc, char *argv[])
          {
          long choixOperation;

          printf("Choisissez l'operation a effectuer");
          /* etc. */
          }

          Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :
          int main(int argc, char *argv[])
          {
              long choixOperation;
          
              printf("Choisissez l'operation a effectuer");
              /* etc. */
          }
          


          C'est plus clair n'est-ce pas ? ;)

          Pour plus d'information à ce sujet, tu peux lire le tutoriel général sur le zCode.

          Merci de ta compréhension. :)
          • Partager sur Facebook
          • Partager sur Twitter

          KeyEvent

          × 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