L'image d'arrière-plan jxable ne rend pas
Question
J'essaie de générer un jxable avec une image d'arrière-plan (un texte serait également bien). Voici ma classe JXTable étendue:
public class JXTableWithBackground extends JXTable{
ImageIcon image;
public JXTableWithBackground(ParticipantTableModel pTableModel, ImageIcon image){
super(pTableModel);
this.image=image;
}
public Component prepareRenderer(TableCellRenderer renderer, int row, int column){
Component c = super.prepareRenderer( renderer, row, column);
// We want renderer component to be transparent so background image is visible
if( c instanceof JComponent )((JComponent)c).setOpaque(false);
return c;
}
@Override
public void paint(Graphics g) {
//draw image in centre
final int imageWidth = image.getIconWidth();
final int imageHeight = image.getIconHeight();
final Dimension d = getSize();
final int x = (d.width - imageWidth)/2;
final int y = (d.height - imageHeight)/2;
g.drawImage(image.getImage(), x, y, null, null);
super.paint(g);
}
L'image ne s'affiche pas - je ne vois que l'espace blanc. Une idée?
La solution
Pour référence future:
Le problème semble être que le tableau lui-même n'est pas rendu de manière transparente. Définition du tableau lui-même sur opaque = false aide.
Autres conseils
Pour SwingX
La façon recommandée d'utiliser par exemple un composant opaque pour le rendu est d'utiliser le Highlighter
interface. Donc, au lieu de remplacer le prepareRenderer
Méthode, il est recommandé d'écrire votre Highlighter
et utilisez le JXTable#setHighlighters
Méthode à installer sur la table
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow