CLASS RENDERER POUR JTABLE POUR AFFICHE UNE LIGNE SUR 2 DE COULEURS DIFERENTE

mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007 - 14 juin 2004 à 15:40
 Utilisateur anonyme - 30 juil. 2008 à 10:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17936-class-renderer-pour-jtable-pour-affiche-une-ligne-sur-2-de-couleurs-diferente

Utilisateur anonyme
30 juil. 2008 à 10:24
Mercie bôcoup pour cette source, qui m'a était tres utiles aussi ^^
cs_makizar Messages postés 2 Date d'inscription vendredi 11 août 2006 Statut Membre Dernière intervention 20 janvier 2008
3 déc. 2007 à 15:55
il ya beuacoup plus simple en effet, il suffit de mettre la condition :

JLabel result = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

if (row%2==0){
result.setBackground(Color.red);
}
else {
result.setBackground(Color.black);
}

voilà ;)
cs_henock Messages postés 14 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 30 juillet 2010
29 août 2007 à 11:12
s'lut !
ton code me parait interessant mais seulement je ne sais pas comment on utilise le Renderer avec une colone.
STP es ce ke tu peux m'indiquer par un bout de code comment je peux utiliser ta classe AlternateCellTableModel à ma JTable.
merci d'avance
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 mai 2005 à 07:58
c est sympa quand meme ;o)...

Mais c vrai que la source n est pas toute jeune non plus ;o)... héhé maintenant je ne ferai plus du tout comme cela... ;o)


++
Renus02 Messages postés 182 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 22 octobre 2010
13 mai 2005 à 14:42
je c'est que sa date mais tant pis je tenais a te remercier car ton code m'a etait super util ;) merci bcp


Renus
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
15 juin 2004 à 21:06
ben le problem c que tu ne peut pas reutiliser ta class ta tou mis en dur dedan.. ;o) et l interer de faire une class separer de ta table c justement de pouvoir en disposer pour d otre et pas forcement avec les meme couleur ;o) ;o)
autremen declare la en class locale c plus simple.. ;o)

et now pour tester la class d un Object on peut use instanceOf c un peut plus propre... ;o)

Mais bon ca doit fonctionner qd meme ;o) .. le but est dc atteind ;o) héhé

++
mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007
15 juin 2004 à 09:06
J'ai refait le code à mes besoins, j'ai beaucoup moins de besoin que ton code à toi, enfin pour le moment en tout cas, enfin si quelque chose ne va pas dans mon code tu me le dis mais il marche bien :

import java.awt.Color;
import java.awt.Component;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.table.TableCellRenderer;

/**
* class de dafichage pour les cellule d une JTable
* cette class permet un coloriage alternatif du fond
*
* @author Ludo
* @version 1
* @since 21.10.2001
* @see JTable
*/
public class AlternateCellTableModel extends JLabel
implements TableCellRenderer
{

protected static Border noFocusBorder;

private int alternateInc;

public AlternateCellTableModel()
{
super();
noFocusBorder = new EmptyBorder(1, 2, 1, 2);
setOpaque(true);
setBorder(noFocusBorder);
}

public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
try
{
System.out.println("-" + row);
if ( (row%2)==0 )
{
super.setBackground(new Color(0.81f, 0.92f, 0.92f));
}else
{
super.setBackground(new Color(1f,1f,1f));
}
if (isSelected)
super.setBackground(new Color(0.1f,0.4f,0.80f));

// restituer ce morceau de code a la place de la ligne precedente pour alligner les text en fonction du type de la donne
// a droite pour du numeric et a gauche pour de l alphanum
// mais moi je prefere tou centrer ;o)
// sa pourrai ossi etre un parametre de la class
if ( table.getColumnClass( column ).getName().endsWith("String" ) ) // cest une string
{
this.setHorizontalAlignment( JLabel.LEFT ); //JLabel.CENTER );
}
else
{
this.setHorizontalAlignment( JLabel.RIGHT ); //JLabel.CENTER );
}

setValue( value );
}
catch (Exception e)
{ System.out.println("AlternateCellTableModel getTableCellRendererComponent() : "+e); }
return this;
}

protected void setValue( Object value )
{
setText( ( value == null ) ? "" : value.toString() );
}

}
mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007
14 juin 2004 à 22:38
euh, pas en noir lol, ce que je voulais dire c'est toutes les lignes était colorées et non une sur deux, pourtant ya pas plus simple comme script
mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007
14 juin 2004 à 22:08
lol, mdr
moi j'ai juste essayé un truc du genre
if (row%2==0){
...
}
Mais ça donné toutes les lignes en noirs :(
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 juin 2004 à 22:04
arg je vien de relire le code ;o) c pas bien dur a ameliorer la c vraiment fait a l arache ;o) j etai jeune... ;o)
mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007
14 juin 2004 à 22:04
Ok, merci beaucoup. Je suis pas au boulot là, donc je teste demain matin.
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 juin 2004 à 22:01
regarde un peu le source tu vera il est pas bien compliker ;o)
je ne me rapelle plus tro comment il fonctionne
mais il me semble qu il faut init toute les couleur qu il doi utiliser
pusi tu fait ton setrenderer...
cad tu instancie dabord ton renderer puis tu fait tous les setcolor ..
enfin la il doit y avoir des color pas defau ;o) dc ca doit pas etre ca
mais pour avoir les ligne 1/2 en couleur tu doit regler le 'pas ' : setInterval( 1 ) par exemple car par default il est a 0...

++
mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007
14 juin 2004 à 21:15
oui je me suis rendu compte que je mettais pas comme il fallait, j'ai essayé sur des colonnes et ça prends bien en compte ton code, par contre j'ai pas compris où il faut paramétré donc je dois encore chercher, moi je veux juste la couleur 1 ligne sur 2 si tu peux m'aider
En tout cas un grand merci pour ton code :)
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 juin 2004 à 21:08
ben ds mon comment g precisé "apres l avoir parametrée" ;o) de plus je ne pense pas que tu utilise la bonne methode de la jtable moi j aplik mes renderer a des columns pas a la JTable direct...
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
14 juin 2004 à 21:07
ben ds mon comment g precisé "apres l avoir parametrée" ;o) de plus je ne pense pas que tu utilise la bonne methode de la jtable moi j aplik mes renderer a des columns pas a la JTable direct...
mouss11 Messages postés 43 Date d'inscription mercredi 22 mai 2002 Statut Membre Dernière intervention 29 octobre 2007
14 juin 2004 à 15:40
Ton code m'intéresse énormément car je dois avoir une ligne sur deux en bleu clair ou gris dans ma JTable.
J'ai fait ça pour l'instancier :
jTableFiches.setDefaultRenderer(JLabel.class,new AlternateCellTableModel());
Mais ça ne marche pas, si tu pouvais m'aider stp
++ Mouss
Rejoignez-nous