Bonjour,
J'ai un tableau de boutons images et j'aimerai lorsque je clique sur un bouton changer l'image (passer d'un pion clair ("b1.gif") à un pion sombre ("b2.gif").
Quelqu'un aurait-il un idée?
Voici mon code:
package test;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
publicclass Fenetre extends JFrame {
/**
*
*/
privatestaticfinallong serialVersionUID = 1L;
private JPanel pan = new JPanel();
// private JButton b = new JButton(new ImageIcon("b1.gif"));
public Fenetre(){
this.setTitle("REVERSO");
this.setSize(450, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setLocationRelativeTo(null);
setLayout(new GridLayout(5, 5, 5, 5));
// Ajout des boutons à notre contentPane
JButton[] b = new JButton[25];
for(int i = 0; i < b.length; i++){
b[i] = new JButton(new ImageIcon("b1.gif"));
b[i].addMouseListener(new MouseListener(){
@Override
publicvoid mouseClicked(MouseEvent e){
// TODO Auto-generated method stub
}
@Override
publicvoid mouseEntered(MouseEvent e){
// TODO Auto-generated method stub
}
@Override
publicvoid mouseExited(MouseEvent e){
// TODO Auto-generated method stub
}
@Override
publicvoid mousePressed(MouseEvent e){
// TODO Auto-generated method stub
}
@Override
publicvoid mouseReleased(MouseEvent e){
// TODO Auto-generated method stub
}
});
pan.add(b[i]);
}
setContentPane(pan);
}
{
this.setContentPane(pan);
this.setVisible(true);
}
}
Bonne journée


Hello,
Je te passe un morceau de code qui te permet de changer l icone du boutton en cliquant dessus :
package graphic; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; public class TestJButtonIconFrame extends JFrame { private static final long serialVersionUID = 1L; private JButton mButton; private ImageIcon mImageIconPionClair; private ImageIcon mImageIconPionFonce; public TestJButtonIconFrame () { setLayout(new FlowLayout()); setSize(new Dimension(100, 100)); mImageIconPionClair = new ImageIcon("b1.gif"); mImageIconPionFonce = new ImageIcon("b2.gif"); mButton = new JButton(mImageIconPionClair); mButton.setPreferredSize(new Dimension(20, 20)); mButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent pE) { ImageIcon mImageIconButton = (ImageIcon) mButton.getIcon(); if (mImageIconButton.getDescription().equals(mImageIconPionClair.getDescription())) { mButton.setIcon(mImageIconPionFonce); } else if (mImageIconButton.getDescription().equals(mImageIconPionFonce.getDescription())) { mButton.setIcon(mImageIconPionClair); } } }); add(mButton); setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } }Bonne chance,
Niroken
Merci Niroken,
J'ai testé le code.
Nikel ça marche.
Par contre j'essais de l'intégrer dans mon tableau et là lorsque je clique sur un bouton, il n'y a que le dernier qui change de couleur.
Mystère et boule de gomme!!!
Je continu la recherche.
Bonne journée.
C'est un champion :)
Montre un peu de ton code écrit pour cette intégration, sans cela, on ne peut pas voir ton problème
Hello,
Je propose une deuxieme version de mon code pour manipuler des tableuax de boutons ainsi que leurs images associées.
Code de la fenetre :
package graphic; import graphic.component.ReversoPion; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JFrame; import commun.CouleurReversoPion; public class ReversoFrame extends JFrame { private static final long serialVersionUID = 1L; private static final int mReversoGridHeight = 10; private static final int mReversoGridWidth = 10; public ReversoFrame() { setLayout(new GridLayout(mReversoGridHeight ,mReversoGridWidth)); setSize(new Dimension(200, 200)); setTitle("Reverso"); ReversoPion[][] vReversoPions = new ReversoPion[mReversoGridHeight][mReversoGridWidth]; // Creation de chaque bouton for (int i = 0; i < mReversoGridHeight; i++) { for (int j = 0 ; j < mReversoGridWidth; j++) { vReversoPions[i][j] = new ReversoPion(CouleurReversoPion.clair); add(vReversoPions[i][j]); } } // Pour chaque bouton cree, on ajoute ses voisins for (int i = 0; i < mReversoGridHeight; i++) { for (int j = 0 ; j < mReversoGridWidth; j++) { if (isReversoPionVoisin(i - 1, j)) { vReversoPions[i][j].addReversoPionVoisin(vReversoPions[i - 1][j]); } if (isReversoPionVoisin(i + 1, j)) { vReversoPions[i][j].addReversoPionVoisin(vReversoPions[i + 1][j]); } if (isReversoPionVoisin(i, j - 1)) { vReversoPions[i][j].addReversoPionVoisin(vReversoPions[i][j - 1]); } if (isReversoPionVoisin(i, j + 1)) { vReversoPions[i][j].addReversoPionVoisin(vReversoPions[i][j + 1]); } } } setVisible(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } private static boolean isReversoPionVoisin(int i , int j) { if (i >= 0 && j >= 0 && i < mReversoGridHeight && j < mReversoGridWidth) { return true; } else { return false; } } }Code des boutons qui héritent de la classe JButton
package graphic.component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JButton; import commun.CouleurReversoPion; public class ReversoPion extends JButton { private static final long serialVersionUID = 1L; private static ImageIcon sImageIconPionClair; private static ImageIcon sImageIconPionFonce; static { sImageIconPionClair = new ImageIcon("b1.gif"); sImageIconPionFonce = new ImageIcon("b2.gif"); } private List<ReversoPion> mReversoPionsVoisins; private CouleurReversoPion mCouleurReversoPion; public ReversoPion(CouleurReversoPion pCouleurReversoPion) { mCouleurReversoPion = pCouleurReversoPion; if (mCouleurReversoPion == CouleurReversoPion.clair) { setIcon(sImageIconPionClair); } else if (mCouleurReversoPion == CouleurReversoPion.fonce) { setIcon(sImageIconPionFonce); } setPreferredSize(new Dimension(20, 20)); addActionListener(new ActionListener() { public void actionPerformed(ActionEvent pE) { changeReversoPionCouleur(); changeReversoPionsVoisinsCouleur(); } }); mReversoPionsVoisins = new ArrayList<ReversoPion>(); } public void changeReversoPionCouleur() { if (mCouleurReversoPion == CouleurReversoPion.clair) { mCouleurReversoPion = CouleurReversoPion.fonce; setIcon(sImageIconPionFonce); } else if (mCouleurReversoPion == CouleurReversoPion.fonce) { mCouleurReversoPion = CouleurReversoPion.clair; setIcon(sImageIconPionClair); } } public void changeReversoPionsVoisinsCouleur() { for (ReversoPion vReversoPionTmp : mReversoPionsVoisins) { vReversoPionTmp.changeReversoPionCouleur(); } } public void addReversoPionVoisin(ReversoPion pReversoPionVoisin) { if (mReversoPionsVoisins != null) { mReversoPionsVoisins.add(pReversoPionVoisin); } } }Une petite enum sans quoi rien ne marche :D
package commun; public enum CouleurReversoPion { clair, fonce }On lance la merveille
import graphic.ReversoFrame; public class Program { public static void main(String[] args) { new ReversoFrame(); } }Pour que ca compile, il est important de placer les classes dans les bons packages, ou alors vous les supprimez.
Bonne chance,
Niroken
Merci FrédéricMazue pour ton intervention.
Comme tu dis Niroken est un champion.
Et merci Niroken pour ce code.