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

Signaler
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011
-
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
-
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;
}
}

9 réponses

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
259
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.
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
259
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)
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011

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
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011

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
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011

Pouvez vous svp me dire comment ajouter des couples d'integers à une liste? Merci,
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011

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
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
259
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.
Messages postés
6
Date d'inscription
mercredi 29 avril 2009
Statut
Membre
Dernière intervention
8 novembre 2011

salut, j'ai plutôt opté pour une liste(arraylist) de points.
Vraiment merci
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
259
Ok, j'ai modifié le titre de ton sujet, peux tu accepter les réponses qui t''on aidé stp ?