OVH Cloud OVH Cloud

JTable headers background (re)

2 réponses
Avatar
yvon.thoravalNO-SPAM
si j'essaie de choisir une couleur de background à la ligne de headers
d'une JTable, je n'ai qu'un mince filet, qui entoure le bouton, de la
couleur désirée :

setBackground(Color.BLUE);
setOpaque(true);

je suis sous MacOS X.3.4 java 1.4.2.

y-at'il un moyen de contourner cette "limitation" ???


--
yt

2 réponses

Avatar
Francis JUGE-BOIRARD
Bonjour,
Une solution :
- Il faut surcharger la méthode addColumn de JTable pour lui faire
ajouter un entête de colonne personnaliser par exemple :
public void addColumn (TableColumn aColumn)
{
HeaderRend defRend = new HeaderRend ();
aColumn.setHeaderRenderer (defRend);
super.addColumn (aColumn);
}

- Il faut ensuite définir le TableCellRenderer qui sera utilisé pour
afficher les entêtes de colonne. J'utilise la classe ci-dessous pour
afficher des entêtes de colonne dont la couleur est définie à la
construction.
class HeaderRend
extends JLabel
implements TableCellRenderer
{
HeaderRend ()
{
super ();
setBorder (new EtchedBorder ());
setHorizontalAlignment (CENTER);
setHorizontalTextPosition (RIGHT);
setOpaque (true);
setFont (getFont ().deriveFont (Font.BOLD, 12f));
}

public Component getTableCellRendererComponent (JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column)
{
setText (getColumnName (column));
if (lastSort == column)
{
setBackground (new Color (getSelectionBackground ().getRGB () |
0x700000));
setForeground (new Color (getSelectionForeground ().getRGB () |
0x700000));
setIcon (orderSort ? iconUp : iconDown);
}
else
{
setBackground (getSelectionBackground ());
setForeground (getSelectionForeground ());
setIcon (null);
}
return (this);
}
} // class HeaderRend...
Avatar
yvon.thoravalNO-SPAM
Francis JUGE-BOIRARD wrote:

Bonjour,
Une solution :
- Il faut surcharger la méthode addColumn de JTable pour lui faire
ajouter un entête de colonne personnaliser par exemple :


[...]

- Il faut ensuite définir le TableCellRenderer qui sera utilisé pour
afficher les entêtes de colonne.


OK, merci, c'est bien ce qu'il me faut.
--
yt