JButton Icon
Résolu/Fermé
Nouyou
Messages postés
51
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
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 !
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
-
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.
-
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-
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; } } -
"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
-