Partage
  • Partager sur Facebook
  • Partager sur Twitter

Grille de boutons

    17 mai 2012 à 20:18:47

    Bonsoir à tous,

    Je vous explique mon soucis :

    J'ai créé une grille de boutons, mais j'ai du mal lorsqu'il faut donner une action à un bouton bien précis.

    Voici mon bout de code correspondant :

    for (int i=1 ; i < 26 ; i++) {
                JButton Bouton = new JButton("" + i);
                Bouton.setBackground(Color.white);
                Centre.add(Bouton);
                Bouton.addActionListener(new BoutonListener());
    }
    


    private class BoutonListener implements ActionListener {
            @Override
            public void actionPerformed (ActionEvent a) {
                
                
     
            if(a.getActionCommand().equals("1"))
        {
            
         }
            }
        
    }
    


    Par exemple je voudrais que lorsque l'on clique sur le bouton "1", la couleur d'arrière plan du bouton change. Mais que dois-je mettre avant mon
    .setBackground(COLOR.black)
    
    ?

    Ce qui est sur c'est que la méthode que j'utilise marche, puisque si je mets la méthode "dispose()" par exemple dans mon if, cela fonctionne, et la fenêtre se ferme bien si j'appuie sur le bouton 1.

    Merci de votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      17 mai 2012 à 21:22:21

      Je te conseille de stocker tous les boutons que tu ajoutes dans ta grille.
      Et de stocker un attribut entier dans ta classe Listener, pour savoir où tu as cliqué.

      List<JButton> lesBoutons = new ArrayList<JButton>();
      for (int i = 0; i < 26; i++)
      {
      JButton bouton = new JButton("" + i);
      bouton.setBackground(Color.WHITE);
      bouton.addActionListener(new BoutonListener(i));
      lesBoutons.add(bouton);
      }
      


      Puis ensuite tu les ajoutes toute dans ta grille :

      for (int i = 0; i < 26; i++)
      {
      Centre.add(lesBoutons.get(i));
      }
      


      N'oublie pas de modifier ta classe BoutonListener :

      private class BoutonListener implements ActionListener {
      
      private int i;
      
      public BoutonListener(int pos)
      {
      this.i = pos;
      }
              @Override
              public void actionPerformed (ActionEvent a) {
                  
                  
       
              if(a.getActionCommand().equals("1"))
          {
              lesBoutons.get(i).setBackground(Color.BLACK); // 
           }
              }
          
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2012 à 22:25:18

        Salut,

        je vois pas ce que tu veux mettre avant ton setBackground().
        Logiquement lors du clic sur un bouton tu changes la couleur de fond en fonction du bouton sur lequel l'utilisateur a appuyé, et c'est tout ou alors j'ai loupé quelque chose.

        Ensuite dans ta méthode actionPerformed() tu peux récupérer le bouton cliqué en faisant a.getSource() il me semble puis dans une boucle tu compares chaque bouton pour voir si c'est bien celui là qui a été cliqué, et quand tu l'as trouvé tu fais tes changements de couleur.

        Le mieux, si il y a autant de couleurs différentes que de boutons, serait encore de toutes les stocker dans un second tableau. L'avantage c'est que quand tu auras trouvé dans ta boucle le bouton qui aura été cliqué, et en admettant qu'il se trouve à l'indice i de ton tableau, tu auras juste à faire un setBackground(tabColors[i]) pour aller chercher la couleur correspondante dans ton second tableau.

        Bien sûr quelque soit la méthode employée ne pas oublier de rafraîchir la fenêtre à la fin pour voir les changements :D .
        • Partager sur Facebook
        • Partager sur Twitter
        ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.

        Grille de boutons

        × 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