Java. Прозрачность формы. @Override

58
21 марта 2022, 09:00

Новый вопрос. Есть появляющаяся форма (на ней элементы), задача сделать ее полупрозрачной. Вначале делал обычными настройками:

rootPanel.setBackground(new Color(0, 0, 0, 223));

Прозрачность появляется, но с ней и разные артефакты (например черный непрозрачный фон под JTextField). Нашел вот этот ответ: Прозрачность jPanel и jLabel

Это должно помочь. Только в примере:

JPanel otherPanel = new JPanel( new BorderLayout() ) {
    @Override
    public void paintComponent( Graphics g ) {

Создается новая панель и она переопределяется. У меня панель уже создана "rootPanel" и на ней располагаются объекты, поэтому я не могу ее удалить и создать новую. Собственно вопрос как переопределить уже существующую панель, или может есть еще какой-то способ сделать прозрачность?

Весь класс выглядит так:

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Profile {
    private JPanel rootPanel;
    private JPanel iconAvaPanel;
    private JTextField nameTextField;
    private JTextField familyNameTextField;
    private JButton Button;
    private JTextPane TextPane;
    private JButton buttonClose;
    private JLabel buttonExit;
    private JLabel phoneNumber;
    private JPanel mainPanel;
    private JPanel panel;
    private void createUIComponents() {
        // TODO: place custom component creation code here
        mainPanel = new JPanel()
        {
            @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                // Apply our own painting effect
                Graphics2D g2d = (Graphics2D) g.create();
                // 50% transparent Alpha
                g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
                g2d.setColor(getBackground());
                g2d.fillRect(0, 0, getWidth(), getHeight());

                g2d.dispose();

            }
        };
        mainPanel.setOpaque( false );
        mainPanel.setBackground( new Color( 0, 0, 0, 200 ) );
        mainPanel.setVisible(false);
        mainPanel.setVisible(true);
    }


    public Profile() {
        nameTextField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
        familyNameTextField.setBorder(javax.swing.BorderFactory.createEmptyBorder());
        buttonExit.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                super.mousePressed(e);
                System.exit(0);
            }
        });
    }

    public JTextField getNameTextField() {
        return nameTextField;
    }
    public void setNameTextField(String name) {
        this.nameTextField.setText(name);
    }
    public JTextField getFamilyNameTextField() {
        return familyNameTextField;
    }
    public void setFamilyNameTextField(String familyName) {
        this.familyNameTextField.setText(familyName);
    }
    public JPanel getRootPanel() {
        return rootPanel;
    }
    public JButton getButtonClose()
    {
        return buttonClose;
    }
    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber.setText(phoneNumber);
    }
    public JPanel getMainPanel() {
        return mainPanel;
    }
    public JPanel getPanel() {
        return panel;
    }

}
Answer 1

Можно так

  panel.setOpaque( false );
READ ALSO
Установка библиотек Spring на сервер

Установка библиотек Spring на сервер

Каждый раз когда мне надо обновить Spring приложение, мне необходимо закачивать на сервер файл размером 30 мегабайт, 29 из которых занимают библиотеки...

114
MyFrame is not abstract and does not override abstract method actionPerfomed (ActionEvent) Action Listener, new level

MyFrame is not abstract and does not override abstract method actionPerfomed (ActionEvent) Action Listener, new level

Самостоятельно изучаю java с помощью книжкиТакая проблема и до этого выскакивала, я просто сменил версию, не помогло

209
Доступ к методу абстрактного класса общего для нескольких классов

Доступ к методу абстрактного класса общего для нескольких классов

У меня есть три класса, являющиеся компонентами

163
Уведомление в приложение при изменение данных

Уведомление в приложение при изменение данных

Приложение список: значение - количество Как сделать проверку раз в 15 секунд обновились ли эти количества и если да то вывести уведомления...

138