JButton Icon

Résolu/Fermé
Nouyou Messages postés 51 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour, je veux écrire un code en java pour un bouton , lorsque je fais le premier clique il change d'icone , et il reviens sans icone en deuxième clique , et ainsi de suite . J'ai écrie ce code mais ça n'a pas marché , il me faut un contrôle pour "value"
Merci de me répondre !

public void actionPerformed(ActionEvent e) {
    value++;
    
    
  switch (value)
    {
        case 0 :
  centre[x][n].setIcon(null);
        break;
        
    case 1:
  centre[x][n].setIcon(one);
        break;
        
   
}

2 réponses

  1. yamdjio Messages postés 91 Statut Membre 5
     
    Bonjour, il faut creer une variable de classe, tu l'initialise a 1, quand tu fais ton actionperformed, tu l'incremente d'abord, puis tu teste si elle est pair tu change d'icone, sinon tu enleve l'icone.
    0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Si tu n'as que présence ou absence de icônes, tu devrais utiliser un booléen.

    private boolean value = false;
    
    public void actionPerformed(ActionEvent e) {
        value = !value;
        centre[x][n].setIcon(value ? one : null);
    }

    Ou implicitement utiliser la valeur déjà mise dans l'icône :

    public void actionPerformed(ActionEvent e) {
        centre[x][n].setIcon(centre[x][n].getIcon()==null ? one : null);
    }

    Remarque : j'imagine (sans trop de peine) qu'il s'agit du même programme que dans ton autre discussion : Matrice interface graphique java.

    Dans ce cas tu peux modifier mon code en remplaçant les dernières lignes de la classe Matrice par ceci :

    public void setIcon(int x, int y) {
        centre[x][y].setIcon(centre[x][y].getIcon()==ONE ? ZERO : ONE);
    }

    La confiance n'exclut pas le contrôle
    0
    1. Nouyou Messages postés 51 Statut Membre
       
      Ouii c'est le même ^^
      Mais je vais changer la couleur de chaque bouton au lieu de changer l'icône . C'est pour cela que j'ai remplacé « value » par une matrice d'entier initialisée par des zéros .
      Et ça a marché ?
      private static int [][] value ;
      public matrice() {
      .
      .
      value= new int[width][height];
      }
      public void compteur (){
                  for(int i=0;i<width;i++)
              {  for(int j=0;j<width;j++)
                      value[i][j]=0;
                  }
          }
      private static class MatriceListener implements ActionListener {
      
       private final matrice2 mat;
          private final int x;
          private final int y;
          
          public MatriceListener(matrice2 mat, int x, int y) {
              this.mat = mat;
              this.x = x;
              this.y = y;        }
      
              @Override
              public void actionPerformed(ActionEvent e) {
                  value[x][y]++;
                  if (value[x][y]%2==1)
              mat.setColor(x,y); 
                  else
              mat.setColorNull(x,y);
      

      et pour le bouton goButton j'ai fait ceci.
      goButton.addActionListener(this);
      @Override
          public void actionPerformed(ActionEvent e) {
                 Resultat R = new Resultat(value);
                 this.dispose();
          }
      
      
      public class Resultat extends JFrame {
          
          private final int Mat[][];
          
          public Resultat(int Mat[][]){
              this.setSize(400, 400);
              this.setVisible(true);
              this.Mat=Mat;
          }
      }
      0