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
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 :
Code des boutons qui héritent de la classe JButton
Une petite enum sans quoi rien ne marche :D
On lance la merveille
Pour que ca compile, il est important de placer les classes dans les bons packages, ou alors vous les supprimez.
Bonne chance,
Niroken