Colorier les cellules d'une Jtable

Résolu
sgbetchedji Messages postés 6 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 8 novembre 2011 - 30 oct. 2011 à 18:12
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 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;
}
}

9 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
30 oct. 2011 à 22:15
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.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
31 oct. 2011 à 12:06
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)
3
sgbetchedji Messages postés 6 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 8 novembre 2011
31 oct. 2011 à 10:41
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
0
sgbetchedji Messages postés 6 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 8 novembre 2011
31 oct. 2011 à 11:47
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sgbetchedji Messages postés 6 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 8 novembre 2011
31 oct. 2011 à 12:24
Pouvez vous svp me dire comment ajouter des couples d'integers à une liste? Merci,
0
sgbetchedji Messages postés 6 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 8 novembre 2011
31 oct. 2011 à 12:40
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
8 nov. 2011 à 15:17
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.
0
sgbetchedji Messages postés 6 Date d'inscription mercredi 29 avril 2009 Statut Membre Dernière intervention 8 novembre 2011
8 nov. 2011 à 20:23
salut, j'ai plutôt opté pour une liste(arraylist) de points.
Vraiment merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
9 nov. 2011 à 07:56
Ok, j'ai modifié le titre de ton sujet, peux tu accepter les réponses qui t''on aidé stp ?
0
Rejoignez-nous