Colorier les cellules d'une Jtable [Résolu]

Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
- - Dernière réponse : cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 9 nov. 2011 à 07:56
Bonjour, Voici mon code pour colorier les cellules d'une Jtable, je voudrais que lorsqu'il rencontre une cellule dont la valeur est de type activity, qu'il me colore les cellules suivants avec la même couleur, le nombre de cellules correspondant à la durée de l'activité. Mais depuis je n'y arrive pas, j'ai lu tous les tutos mais rien, pouvez vous m'aider svp; merci
public class Renderer extends DefaultTableCellRenderer{
int i=0, duree=0, numrow,numcol;
public void obtenir()
{

}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
Component cell=super.getTableCellRendererComponent(table, value,isSelected, hasFocus, row, column);
JLabel label=(JLabel)cell;
table.getColumnModel().getColumn(0).setPreferredWidth(30);
cell.setBackground(Color.magenta);



if(value instanceof Activity)
{
cell.setBackground(Color.blue);

Activity act=(Activity)value;
duree=act.getDuree()/30;
numcol=column;
numrow=row;
}
else if(column==0)
{

cell.setBackground(Color.lightGray);
label.setHorizontalAlignment(CENTER);

}else if ((i<20)&&(column==numcol)&&(i!=0)){
i++;
cell.setBackground(Color.blue);
}


return cell;
}
}
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
3
Merci
Bonjour,

Pour cela, il faut que tu récupères le numéro de ligne sur lequel la valeur est de type activity. Tu peux stocker cette valeur dans une liste en paramètre du renderer.

Et dans le code de ton renderer tu colores toutes les cellules qui sont dans cette liste.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
3
Merci
Je ne vois vraiment pas ce que tu veux faire en ajoutant uniquement null à ta liste ??

Ce que je te conseil, c'est plutôt de creer une liste d'integer et d'ajouter les indices des lignes que tu veux conserver. (row et colums)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
0
Merci
Merci pour la reponse mais j'ai pas bien compris la partie "stocker cette valeur dans une liste en paramètre du renderer", pourriez vous s'il vous plaît m'expliquer un peu plus. Merci
Commenter la réponse de sgbetchedji
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
0
Merci
Bonjour, j'ai essayé d'appliquer votre solution mais j'ai un autre probleme, la liste contient plus de cellules que ceux que j'ai ajouté, c'est à dire toutes les autres cellules;


ArrayList<Component> list= new ArrayList<Component>();
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{

Component cell=super.getTableCellRendererComponent(table, value,isSelected, hasFocus, row, column);
JLabel label=(JLabel)cell;
table.getColumnModel().getColumn(0).setPreferredWidth(30);
cell.setBackground(Color.white);



if(value instanceof Activity)
{
cell.setBackground(Color.blue);
Activity act=(Activity)value;
duree=act.getDuree()/30;
numcol=column;
numrow=row;
for(int i=0; i<2;i++)
{
numrow=numrow+1;
cell=super.getTableCellRendererComponent(table, table.getValueAt(numrow, numcol), isSelected, hasFocus, numrow, numcol);
list.add(null);
System.out.println("ajoute");

}
}else if(column==0)
{

cell.setBackground(Color.lightGray);
label.setHorizontalAlignment(CENTER);

}else if(list.contains(cell))
{

// System.out.println(list.contains(cell));
cell.setBackground(Color.magenta);
}

return cell;
}
}

Merci
Commenter la réponse de sgbetchedji
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
0
Merci
Pouvez vous svp me dire comment ajouter des couples d'integers à une liste? Merci,
Commenter la réponse de sgbetchedji
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
0
Merci
Merci pour votre aide, j'ai crée un objet couple et j'ai fait une liste de couples, et ca marche. Bonne journée
Commenter la réponse de sgbetchedji
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Alors, tu as réussi ? Pour ta liste de couple, de temps en temps, une map est plus adaptée ou une liste de Point.
Commenter la réponse de cs_Julien39
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
0
Merci
salut, j'ai plutôt opté pour une liste(arraylist) de points.
Vraiment merci
Commenter la réponse de sgbetchedji
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
Ok, j'ai modifié le titre de ton sujet, peux tu accepter les réponses qui t''on aidé stp ?
Commenter la réponse de cs_Julien39