Pregunta

Estoy intentando generar un JXTable con una imagen de fondo (un texto también estaría bien).Aquí está mi clase JXTable extendida:

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);
    }

La imagen no aparece, solo veo espacios en blanco.¿Alguna idea?

¿Fue útil?

Solución

Para referencia futura:

El problema parece ser que la tabla en sí no se representa de forma transparente.Establecer la propia tabla en opaque= false ayuda.

Otros consejos

Para SwingX, la forma recomendada de, por ejemplo, utilizar un componente opaco para renderizar es utilizar Highlighter interfaz.Por lo tanto, en lugar de anular el método prepareRenderer, se recomienda escribir su Highlighter y utilizar JXTable#setHighlighters método para estableceren la mesa

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top