JButton Icon

Résolu/Fermé
Nouyou Messages postés 40 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 16 mars 2016 - Modifié par Chris 94 le 21/03/2015 à 15:12
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 21 mars 2015 à 22:45
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;
        
   
}
A voir également:

2 réponses

yamdjio Messages postés 90 Date d'inscription lundi 18 août 2014 Statut Membre Dernière intervention 21 mai 2015 5
21 mars 2015 à 15:18
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
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 21/03/2015 à 15:38
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
Nouyou Messages postés 40 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 16 mars 2016
Modifié par KX le 21/03/2015 à 22:43
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
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
21 mars 2015 à 22:45
"Et ça a marché ?"
Est-ce vraiment une question ? Ou une affirmation ?

Quoi qu'il en soit je ferme cette discussion, tu commences à parler de goButton, c'est une proposition que je t'ai faite dans l'autre discussion, alors pour être cohérent, gardons une seule discussion d'ouverte :

https://forums.commentcamarche.net/forum/affich-31724352-matrice-interface-graphique-java
0