Frage

Ich versuche, eine JXTable mit einem Hintergrundbild zu generieren (ein Text wäre auch in Ordnung).Hier ist meine erweiterte JXTable-Klasse:

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

Das Bild wird nicht angezeigt - ich sehe nur Leerzeichen.Irgendeine Idee?

War es hilfreich?

Lösung

Zum späteren Nachschlagen:

Das Problem scheint zu sein, dass die Tabelle selbst nicht transparent gerendert wird.Das Setzen der Tabelle selbst auf opak= false hilft.

Andere Tipps

Für SwingX wird empfohlen, beispielsweise eine undurchsichtige Komponente zum Rendern zu verwenden, indem Sie Highlighter -Schnittstelle.Anstatt die prepareRenderer-Methode zu überschreiben, wird empfohlen, Ihren Highlighter zu schreiben und JXTable#setHighlighters Methode zum Einstellenauf dem Tisch

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top