Java JXTable背景图像don';t渲染

Java JXTable背景图像don';t渲染,java,swingx,jxtable,Java,Swingx,Jxtable,我正在尝试生成一个带有背景图像的JXTable(文本也可以)。这是我的扩展JXTable类: public class JXTableWithBackground extends JXTable{ ImageIcon image; public JXTableWithBackground(ParticipantTableModel pTableModel, ImageIcon image){ super(pTableModel); this.im

我正在尝试生成一个带有背景图像的JXTable(文本也可以)。这是我的扩展JXTable类:

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);
    }
图像没有显示-我只看到空白。有什么想法吗?

供将来参考:


问题似乎是表本身没有透明地呈现。将表本身设置为不透明=假有帮助。

对于
SwingX
例如,建议使用不透明组件进行渲染的方法是使用界面。因此,建议不要重写
prepareRenderer
方法,而是编写您的
荧光灯
,并使用该方法在表中设置

单元格组件由于其背景颜色,可能仍会呈现非不透明像素。您是否尝试返回非不透明的空标签作为测试?@Thomas我刚刚尝试过,但它仍然是白色的。请注意,表格本身可能有一个背景,因此调用
super。paint(g)
实际上可能会完全隐藏您的图像。@Thomas right,将不透明值设置为false会使图像可见!伟大的我将添加一个答案。:)