Как повесить над Jpanel ещё одну полупрозрачную JPanel?

307
22 февраля 2017, 20:49

Здравствуйте. Есть одно окно java GUI-FORM (файлы .java и .form). У этого окна есть rootpanel, на который добавлены необходимые SWING-элементы. Мне нужно сделать, чтобы при нажатии на кнопку rootpanel'а поверх него появлялось темное полупрозрачное окно (другой overpanel) с необходимыми элементами, которые будут заданы позже. Пробовал использовать LayoutManager overlay = new OverlayLayout(JPanel rootpanel); и JLayeredPane, но для них, как понял, нужно эти 2 разноуровневых JPanel вложить в rootpanel, а он у меня уже занят SWING-элементами. Вопрос: можно ли как-то просто поместить над rootpanel overpanel без использования третьего JPanel в качестве контейнера. Надеюсь, понятно выразился. Если можно, пожалуйста, проиллюстрируйте ответ простейшим примером с кодом.

Answer 1

Не уверен, но можете попробовать переопределить paintComponent у той панели, которая должна быть прозрачной (для неё лучше, конечно, создать свой отдельный класс)

    //Полупрозрачная панель
    JPanel otherPanel = new JPanel( new BorderLayout() ) {
        @Override
        public void paintComponent( Graphics g ) {
            super.paintComponent( g );
            Graphics2D g2d = (Graphics2D) g.create();
                                                               //0.5f = 50% прозрачность
            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); 
            g2d.setColor(getBackground());
            g2d.fillRect( 0, 0, getWidth(), getHeight() );
            g2d.dispose();
        }
    };

Пример взял отсюда: Прозрачность jPanel и jLabel

READ ALSO
Передать значение String на DoubleUnaryOperator

Передать значение String на DoubleUnaryOperator

Как можно передать значение String в DoubleUnaryOperator ? Писать парсер не так просто, а использовать сторонние библиотеки и прочее я не могуНапример,...

245
Получить доступ к Android SDK из Java module

Получить доступ к Android SDK из Java module

Андроид приложение содержит несколько модулей, среде них есть Android module и корневой Java moduleКак в последнем получить доступ к Android SDK?

226
Слабая производительность графики Java Swing Graphics2D

Слабая производительность графики Java Swing Graphics2D

Уверен, что "подтормаживание" не зависит от "железа", значит, можно как-то разрешить программе использовать больше ресурсовЧем больше линий,...

223