L'immagine di sfondo di JXTable non viene renderizzata
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?
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