Как сделать прозрачными JLayeredPane () и JPanel ()? Это всегда показывает фон супер окна

Как полностью сделать эту серую панель прозрачной , чтобы я мог видеть только кнопку "Тест" , но не серый блок (JPanel или JLayeredPane)

Снимок экрана: введите описание изображения здесь

public class win extends JWindow 
{
    ...

    public win() 
    {
        super(new JFrame());
        layers = new JLayeredPane();
        button = new JButton("close");

        this.setLayout (new BorderLayout ());
        ..

        button.setBackground(Color.RED);
        button.setSize(200,200);
        button.setLocation(0,20);
        this.add("North", button);

        JPanel p = new JPanel();
        p.setOpaque(false);
        p.setSize(300, 200);
        p.setLocation(0, 0);
        p.add(new JButton("Test"));

        layers.add(p, new Integer(1));
        layers.setSize(400,300);
        layers.setLocation(400,50);
        layers.setOpaque(false);
        this.add("North", layers);

        canvas.setSize(screenSize.width,screenSize.height);
        this.add("North",canvas);
        //com.sun.awt.AWTUtilities.setWindowOpacity(this, 0.5f); // gives error in my Java version

    }
}

Последующие действия: установлены в соответствии с рекомендациями, но пока не повезло.

ERROR not solved: Exception in thread "main" java.lang.UnsupportedOperationException: The TRANSLUCENT translucency kind is not supported.

Installed:
  compiz-gnome.i686 0:0.9.4-2.fc15                                                      

Dependency Installed:
  compiz-gtk.i686 0:0.9.4-2.fc15           compiz-plugins-main.i686 0:0.9.4-1.fc15     
  libcompizconfig.i686 0:0.9.4-1.fc15      protobuf.i686 0:2.3.0-7.fc15                

Complete!
You have mail in /var/spool/mail/root
[[email protected] ~]# xdpyinfo | grep -i render
    RENDER
You have mail in /var/spool/mail/root
[[email protected] ~]# xdpyinfo | grep -i comp
    Composite
    XVideo-MotionCompensation
[[email protected] ~]# 
4 голоса | спросил YumYumYum 15 J000000Friday11 2011, 23:09:06

1 ответ


0

См. эту статью или эта статья . Обратите внимание, что не все среды поддерживают все функции (прозрачность, прозрачность на пиксель и т. Д.), Описанные в статье.

РЕДАКТИРОВАТЬ . В моей системе (Ubuntu 10.04.2 LTS, Sun java 1.6.0_26) следующий код:

  System.out.println("TRANSLUCENT supported:          " + AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT));
  System.out.println("PERPIXEL_TRANSPARENT supported: " + AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.PERPIXEL_TRANSPARENT));
  System.out.println("PERPIXEL_TRANSLUCENT supported: " + AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.PERPIXEL_TRANSLUCENT));

дает:

TRANSLUCENT supported:          false
PERPIXEL_TRANSPARENT supported: true
PERPIXEL_TRANSLUCENT supported: true

EDIT2: , вдохновленный этим обсуждением , я только что установил и настроил compiz и теперь ползунок «постоянный уровень непрозрачности» веб-приложения запуска во второй статье, указанной выше, внезапно может быть перемещен на значения меньшие чем 100% и демо-кадр на самом деле является полупрозрачным. Также фрагмент кода, показанный выше, теперь печатает true для всех трех видов прозрачности /прозрачности. И AWTUtilities.setWindowOpacity(..) больше не выбрасывает, но создает прозрачное окно.

ответил Andre Holzner 15 J000000Friday11 2011, 23:20:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132