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?

Était-ce utile?

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
scroll top