Problème de couleur dans une JTable

jc_romeo Messages postés 59 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2006 - 8 juil. 2004 à 14:47
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 - 9 juil. 2004 à 10:31
Bonjour
Je voudrais mettre une couleur (ici rouge) en arrière fond pour chacune de mes cases de ma JTable
(plus tard il y aura un algo qui permettra de savoir quelle couleur choisir donc je ne peux pas faire un truc uniforme mais plutot un truc cellule par cellule)
J'ai donc créer la classe:

public class MonAfficheurCelluleString implements TableCellRenderer{

JLabel l = new JLabel();

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int col)
{l.setForeground(Color.red);
l.setHorizontalAlignment(JLabel.CENTER);
l.setText((String)value);
return l;
}

}

puis j'ai essayé de lui dire de mettre de la couleur avec:
table_ligne=new JTable(object,value);
table_ligne.setDefaultRenderer(String.class,new MonAfficheurCelluleString());

Mais il ne fait rien du tout
J'ai pas de couleur
Est ce que quelqu'un pourrait m'aider SVP
Merci d'avance

JC

5 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
8 juil. 2004 à 15:07
met le JLabel l = new JLabel(); dans ta methode getTableCellRendererComponent

sinon actuelement, il utilise le meme JLabel pour toutes tes cases. Si la derniere est cense etre vide, elles sont toutes vides.

et au cas ou, setForeground c'est la couleur du texte pas du fond.
0
jc_romeo Messages postés 59 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2006
8 juil. 2004 à 16:08
Merci
Je l'ai fait mais en fait j'ai un problème plus surprenant.
j'ai la classe:

public class MonAfficheurCelluleString implements TableCellRenderer{

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int col)
    {JLabel l = new JLabel();
     l.setForeground(Color.green);
     l.setHorizontalAlignment(JLabel.CENTER);
     l.setText((String)value);
     l.setBackground(Color.blue);
     return l;
     }

}


et quand j'execute mon programme cela me fait une écriture en vert mais le fond reste blanc...????

Sinon j'ai une classe:

public class Donnees_matrice extends AbstractTableModel {
  protected String valeur[][];
  protected String name[];
  
  public Donnees_matrice(String val[][],String nom[]) 
  {valeur=val;
  name=nom;
  }
  
  public int getColumnCount() 
  {return valeur[0].length;
  }

  public Object getValueAt(int parm1, int parm2) 
  {return valeur[parm1][parm2];
  }

  public int getRowCount() 
  {return valeur.length;
  }

  public String getColumnName(int col)
  {return name[col];
  }
  
  public Class getColumnClass(int c) 
  {return getValueAt(0,c).getClass();
  }
  
  public void setValueAt(Object o,int parm1,int parm2)
  {valeur[parm1][parm2]=(String) o;
  }

 public boolean isCellEditable(int row, int col) 
 {return true;
 }
}

je voudrais éditer une table qui a déjà été créee sur ce model
(le JTable table=new JTable(...) a déjà été fait)
j'ai essayé comme cela
((Donnees_matrice) table.getModel()).setValueAt(val,i,j);
mais il ne veut pas me réafficher les bons nombres.
Est ce que quelqu'un aurait une idée du pourquoi?
Merci d'avance pour ces 2 questions.
JC
0
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
8 juil. 2004 à 16:30
setForeground c'est l'ecriture
setBackground c'est le fond .

pour le setValue je vois pas
0
jc_romeo Messages postés 59 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2006
8 juil. 2004 à 17:02
merci beaucoup
En fait il fallait changer dans la premiere classe le implement en extends puis faire un super(.....)
Est ce que tu saurais comment faire pour que lorsque l'on clique sur l'une des cases de le JTable on puisse faire des actions.
J'ai essayé de mettre un mouseListener sur la table cela marche mais je ne sais pas sur quelle ligne et quelle colonne je suis
J'ai essayé de mettre des mouseListener sur chacun des JLabel mais cela ne répond pas????
Est ce que quelqu'un pourrait m'aider SVP
Merci beaucoup
JC
0

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

Posez votre question
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
9 juil. 2004 à 10:31
utilise un selectionModel sur ta table
0
Rejoignez-nous