Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Mettre en couleur la cellule selectionnee d'une JTable [ Archives / Au secours ] (kobee12)

lundi 1 mars 2004 à 19:58:21 | Mettre en couleur la cellule selectionnee d'une JTable

kobee12

Salut a tous.
J'aimerais pouvoir mettre en couleur la cellule que je selectionne en cliquant(par exemple le contour de la cellule en rouge).
Je n'arrive qu'a mettre toute la ligne en couleur et pas juste une cellule.
Ca serait cool que quelqu'un puisse m'aider

lundi 1 mars 2004 à 21:16:28 | Re : Mettre en couleur la cellule selectionnee d'une JTable

kobee12

Finalement j'ai trouve la reponse a mon pb.
Je met le code pour ceux a qui ca interesserait
Voici ma classe du rendu de mes cellules :

public Component getTableCellRendererComponent(
JTable table, Object val,
boolean isSelected, boolean hasFocus,
int row, int column)
{
setAlignmentX( CENTER_ALIGNMENT );

// s'assure du style de la font
Font f = getFont();
// on met une font differente pour la ligne selectionnee...
if ( isSelected)
{
setFont( new Font( f.getName(), Font.PLAIN|Font.ITALIC, f.getSize() ) );
// gestion des couleur de selection
super.setForeground( ( selectedForeground != null) ? selectedForeground : table.getSelectionForeground() );
super.setBackground( ( selectedBackground != null) ? selectedBackground : table.getSelectionBackground() );
}
// ...et les autres lignes
else
{
setFont( new Font( f.getName(), Font.PLAIN, f.getSize() ) );
if ( ((column)>>1)<<1 == column - (row-((row>>1)<<1)) )
{
super.setForeground( ( unselectedForegroundAlt != null) ? unselectedForegroundAlt : table.getForeground() );
super.setBackground( ( unselectedBackgroundAlt != null) ? unselectedBackgroundAlt : table.getBackground() );
}
else
{
super.setForeground( ( unselectedForeground != null) ? unselectedForeground : table.getForeground() );
super.setBackground( ( unselectedBackground != null) ? unselectedBackground : table.getBackground() );
}
}
// On met dans une autre font la cellule selectionnee
if( isSelected && column==table.getSelectedColumn())
{
setFont( new Font( f.getName(), Font.PLAIN|Font.BOLD|Font.ITALIC, f.getSize() ) );
// gestion des couleur de selection
super.setForeground( ( selectedForeground != null) ? selectedForeground : table.getSelectionForeground() );
super.setBackground( new java.awt.Color(100,190,240) ); // bleu-vert
}
setText( val.toString() );
return this;
}
}

Voila, finalement c'etait plutot simple, fallait juste y penser

mercredi 3 août 2005 à 12:23:28 | Re : Mettre en couleur la cellule selectionnee d'une JTable

c1rd3c

Coucou,

Je suis nouveau pour ce qui est d JTable. Je dois faire la meme chose pour mon aplication. Je dois changer la couleur d'une case, qd je clique dessus.
Maintenant, je ne vois pas comment utiliser le code source ci-dessus? Est ce qqn pourrait m'aider?

Merci.
Cirdec.


mercredi 3 août 2005 à 14:05:58 | Re : Mettre en couleur la cellule selectionnee d'une JTable

kobee12

Tu définit d'abord un modele de table Ex : DefaultTableModel df = new DefaultTableModel() { public boolean isCellEditable(int row, int col) { return false; } }; tu définis le model pour ta table : jTable.setModel(df); tu peux définir le rendu des en-têtes : TableCellRenderer tbcH = createHeaderRenderer(); tu définis le nombre de colonnes auxquelles tu appliques le rendu des cellules et des en-têtes : for (int i = 0; i < nbCol; i++) { TableColumn tc = jTable.getTableHeader().getColumnModel().getColumn(i); tc.setHeaderRenderer(tbcH); tc.setCellRenderer(new DemoCellRenderer()); } // Exemple de definitions des en-têtes private TableCellRenderer createHeaderRenderer() { DefaultTableCellRenderer label = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JTextArea lbl = new JTextArea() { // methode a redefinir pour modifier l aspect de la cellule public void paint(Graphics g) { super.paint(g); } }; // Donne une couleur pour chaque en-tête selon initcolors() Color back = (Color) couleur.get(getText()); //Couleur de fond des en-têtes. Si==null->couleur par defaut lbl.setBackground( (back == null) ? defoBack : back); //Couleur du texte des en-têtes lbl.setForeground(foreColor); Font font = table.getFont(); lbl.setOpaque(true); font = new Font(font.getName(), Font.BOLD, font.getSize()); lbl.setFont(font); lbl.setBorder(UIManager.getBorder("TableHeader.cellBorder")); lbl.setText( (String) value); return lbl; } }; label.setHorizontalAlignment(JLabel.CENTER); return label; } Tu rajoutes la fonction getTableCellRendererComponent() avec tout ce qu'il y a au dessus dans une classe et tu fais appel à cette classe. J'espère que j'ai été clair. @+ Kobee12

mercredi 3 août 2005 à 14:35:45 | Re : Mettre en couleur la cellule selectionnee d'une JTable

c1rd3c

Je resume pour voir si j'ai bien compris :
- J'ai donc créer une classe "PlateTemplateModel" avec les fonctions que tu m'as donné (est ce que cette classe doit implémenter qqch?). Deja la, le problème, c'est que ma classe ne connait pas par exemple selectedForeground (dans getTableCellRendererComponent), selectedBackground, unselectedForegroundAlt ou setFont, ...
- Il faut dc ensuite que je créer une classe qui va faire appel a "PlateTemplateModel". Tout le reste va se faire tt seul?




mercredi 3 août 2005 à 15:53:13 | Re : Mettre en couleur la cellule selectionnee d'une JTable

kobee12

Va voir cette source, elle m'a bien aidé pour les tables. http://www.javafr.com/code.aspx?id=20197 Tu réadaptes les fonctions que je t'ai donné dans la classe de l'exemple et ensuite tu fais appel a cette classe du style : FrmTable table = new FrmTable(); jScrollPane1.getViewport().add(table.jTable); Mets bien la table dans un jscrollPane parce que je crois que sinon ca ne fonctionne pas.



Cette discussion est classé dans : couleur, cellule, jtable, selectionnee


Répondre à ce message

Sujets en rapport avec ce message

Passer a la cellule de droite dans une JTable [ par chmurbluk ] Dans une JTable, apres la validation d'une cellule en edition par la touche Enter, la nouvelle cellule selectionnee est la cellule du dessous alors qu couleur de cellule dans une JTable [ par javateux ] bonjour, voila mn probleme:j veu colorer des cellules selectionnées dans une table et les garder en couleur, existe-t-il des proprietés pour la table Cellule JTable [ par javateux ] Salut, super g reussit à changer les couleur de cellules dans un jtable...le probleme c'est que la couleur est changée pour toute la colonne et non se couleur de jtable [ par adil1251985 ] besoin d'aide SVP alors je veux colorier quelques cellules de mon JTable selon le critère de la valeur de cette cellule c-a-d si la cellule n'est pas retour à la ligne dans une cellule de JTable [ par RugbyOne ] Bonjour à tous, J'ai une JTable pour gérer mon affichage. Le problème c'est que les données (chaînes de caractères) dans chaque cellule de la J jTable Couleur ligne [ par watoubilly ] Bonjour, je souhaiterais afficher un ligne en rouge dans un jTable.Ce n'est pas une ligne selectionnée.C'est une ligne au hasard.Comment faire.J'ai tr Couleur des cellules de JTable [ par adil1251985 ] je voudrai colorier des cellules de ma table(JTable). koment faire?et si vou avez des liens utiles a ce sujet ca serai la bienvenu merci d'avence JTable LostFocus sur Cellule editable [ par crakos ] Bonjour,Voila j'ai crée mon JTable(JTextField) avec 5 colonnes dont 2 editables.Dans la premiere colonne je saisis un numero article est ca rempli sur cellule de jtable [ par kawtar_ch ] Bonjour tout le monde!!est-ce qu'on peut retourner a la ligne dans une cellule de jTable comme c le cas pour excel?Si c'est oui, comment peut-on faire prb JTable: l'utilisation de setCellSelectionEnabled() [ par Sebastien_teisseire ] voila, je souhaite empecher que l'utilisateur puisse selectionner une cellule, je fais donc dans mon constructeur de Jtable; _tableau.setCellSelection


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.