سؤال

أحاول إنشاء 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);
    }

الصورة لم تظهر، لا أرى سوى مساحة بيضاء.اي فكرة؟

هل كانت مفيدة؟

المحلول

للحصول على مرجع في المستقبل:

يبدو أن المشكلة هي أن الجدول نفسه لم يتم تقديمه بشفافية.تعيين الجدول نفسه إلى Opaque= Walse يساعد.

نصائح أخرى

ل SwingX الطريقة الموصى بها على سبيل المثال لاستخدام مكون غير شفاف للعرض هي استخدام Highlighter واجهه المستخدم.لذلك بدلاً من تجاوز prepareRenderer الطريقة، فمن المستحسن أن تكتب الخاص بك Highlighter واستخدام JXTable#setHighlighters طريقة وضعها على الطاولة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top