La imagen de fondo de JXTable no se renderiza
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?
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