Bonjour à tous,
Je rencontre des difficultés pour colorier certaines cases d'une JTable. Avant toute chose je précise que j'ai bien cherché sur le forum et que malgré les aides apportées aux autres membres, je n'ai pas réussi à trouver la solution pour mon application.
Voici mon soucis :
Dans un jeu, j'ai un joueur qui a des pièces (un peu comme celles du jeu Tetris) matérialisées par des matrices 5*5 contenant des 1 si la case courante est remplie, des 0 si la case courante n'est pas remplie.
Par ex, pour faire une pièce longue de 4 carrés, la matrice est la suivante :
1 1 1 1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
J'aimerai afficher cette pièce dans une JTable, et colorier les cases de la JTable en fonction des données. Si un 1 est à la case d'indice [i][j] de ma matrice de pièce je colorie la case correspondante dans ma JTable (donc à l'indice [i][j]) en rouge par ex, sinon je laisse en blanc.
En cherchant sur ce forum et d'autres, j'ai trouvé ce code :
et ce code est appelé par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class MyTableCellRenderer extends DefaultTableCellRenderer { int i; int j; public MyTableCellRenderer(int ligne, int colonne) { super(); i = ligne; j = colonne; } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); Color couleur_fond = new Color(238,238,238); if (row == i || column == j) { setBackground(joueur1.get_couleur_pieces()); else setBackground(couleur_fond); return this; }
Malheureusement, ce code me permet uniquement de colorier les cases de la première ligne et de la 1ere colonne. Ce code ne colorie pas les cases en fonction des entiers contenus dans ma matrice contenant les informations de la pièce du joueur à afficher. Or vous comprendrez bien que le joueur aura plusieurs pièces différentes et que en fonction de chaque pièce, la méthode doit afficher différents résultats. J'ai essayé différentes choses mais rien de très concluant ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 tJ1_1.setDefaultRenderer(Object.class, new MyTableCellRenderer(0,0));
J'espère avoir été clair, si ce n'est pas le cas, n'hésitez pas à demander plus d'informations .
Merci à ceux qui trouveront le temps pour m'aider !
Partager