Domanda

Sto cercando di generare una tabella JXTable con un'immagine di sfondo (andrebbe bene anche un testo).Ecco la mia classe JXTable estesa:

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'immagine non viene visualizzata: vedo solo lo spazio bianco.Qualche idea?

È stato utile?

Soluzione

Per riferimento futuro:

Il problema sembra essere che la tabella stessa non è resa in modo trasparente.Impostare la tabella stessa su opaque= false aiuta.

Altri suggerimenti

Per SwingX, il modo consigliato per utilizzare ad esempio un componente opaco per il rendering è utilizzare Highlighter .Quindi, invece di sovrascrivere il metodo prepareRenderer, si consiglia di scrivere il proprio Highlighter e utilizzare JXTable#setHighlighters metodo da impostaresul tavolo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top