Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifications successives JLabel

Sujet résolu
    23 mai 2015 à 18:53:16

    Bonjour, je débute en swing j'ai une question concernant les JLabel

    Je vous explique, je voudrais changer le texte d'un JLabel à chaque fois que j'appuie sur la touche "entrée", pour cela j'ai utilisé la méthode issu de KeyListener. ça marche pour afficher mon premier message puis mon 2e message mais je ne vois pas comment faire pour ensuite passer à un 3e message après avoir vu le 1er et le 2e.

    En gros je voudrais faire : message1 ; Entrée ; message2 ; Entrée ; message3 ; Entrée ; message4 etc..

    Comment faudrait il que je m'y prenne ?

    Merci de vos réponses :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 14:17:35

      Bonjour,

      En créant une classe interne "ClavierListener" ( par exemple ) implémentant la classe KeyListener tu as accès à plusieurs méthodes abstraites à implémenter :

      class ClavierListener implements KeyListener{
      
      	public void keyPressed(KeyEvent e) {}
      	public void keyTyped(KeyEvent e) {}
      	public void keyReleased(KeyEvent e) {}
      }


      Tu peux alors utiliser par exemple la méthode KeyPressed() pour que ton programme écoute ton clavier et réagisse quand tu appuies sur la touche entrée :

      	public void keyPressed(KeyEvent e) {
      		if(e.getKeyChar()==10){}
      	}

      Pour finir, une méthode simple pour changer le contenu d'un JLabel est la méthode : JLabel.setText(String text);

      Donc en gros ta classe ressemblerait à ça : 

      class ClavierListener implements KeyListener{
      
      	public void keyPressed(KeyEvent e) {
      		if(e.getKeyChar()==10){
                           JLabel.setText(JTextField.getText());
                      }
      	}
      	public void keyTyped(KeyEvent e) {}
      	public void keyReleased(KeyEvent e) {}
      }

      Tu n'as plus qu'à l'adapter pour qu'elle marche avec ton programme. :)

      En espérant que ça t'ai aidé, cordialement.


      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2015 à 15:07:52

        Merci pour ta réponse,

        pour mon application je souhaiterais que mon JLabel affiche une sorte de récit, que l'utilisateur lise le texte, puis appuie sur le bouton entrée pour passer à la seconde partie, puis 3e partie etc..

        La méthode que tu m'as envoyé est similaire à cette que j'avais utilisée, mais ça ne permet que d'afficher soit le texte entier, soit de le diviser en 2 (il a la première partie de base, il appuie sur entrée et voit la deuxième partie, mais je vois pas comment faire afficher 3 parties et plus.

        Exemple :

        texte 1 : "texte1"

        texte 2 : "texte2"

        texte 3 : "texte3"

        Le JLabel prend en parametre de base "texte1", la methode keyPressed permet d'afficher "texte2" mais comment sortir "texte3" ?

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2015 à 15:23:41

          Tu stockes toutes tes parties dans un tableau de chaîne de caractères String[], tu créés une variable qui te permettra de savoir à quelle partie tu es actuellement et à chaque appui sur la touche Entrée tu incrémentes cette variable tu affiches la partie suivante en allant chercher dans ton tableau. Quelque chose comme :

          public void keyPressed(KeyEvent e) {
            if (e.getKeyChar() == 10) {
              indice++; // Incrémentation (on passe à la partie suivante)
              label.setText(parties[indice]); // On affiche cette partie
            }
          }
          

          Je ne l'ai pas mis dans ce code, mais une fois ta variable incrémentée il faudra que tu vérifies si il reste des parties à afficher, sinon tu risques d'avoir une jolie erreur de type ArrayIndexOutOfBoundsException (par exemple si tu essayes d'afficher la partie 4 alors que ton tableau n'en contient que 3).

          -
          Edité par Flawyte 24 mai 2015 à 15:32:51

          • Partager sur Facebook
          • Partager sur Twitter
          ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
            24 mai 2015 à 15:24:36

            tu peux faire comme ça :

            un tableau de String[] tabString avec chaque partie du récit dans une case du tableau.

            Créé un compteur int cpt = 0

            initialiser ton JLabel à setText(tabString[0])

            Et à chaque fois qu'on appuie sur la touche entrée tu incrémente le compteur cpt++ et tu fais Jlabel.setText(tabString[cpt]);

            Edit : Flawyte a répondu plus vite :) son message est plus complet, prends son exemple.

            -
            Edité par Maxime O. 24 mai 2015 à 15:35:29

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2015 à 15:43:16

              ça marche parfaitement merci beaucoup à vous 2 ! :)
              • Partager sur Facebook
              • Partager sur Twitter

              Modifications successives JLabel

              × 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