Swing Dialog Градиентная краска Выпуск - PullRequest
0 голосов
/ 29 октября 2018

Хотите нарисовать градиентный фон для диалогового окна

1 Ответ

0 голосов
/ 29 октября 2018
  1. Не играйте с корневой или многослойной панелью.

  2. Не переопределяйте paint () на JFrame или JDialog.

Если вы хотите сделать пользовательское рисование для фона, вы переопределяете метод paintComponent (...) JPanel. Затем вы устанавливаете эту панель как панель содержимого вашего диалога.

Прочтите раздел из учебника по Swing по Custom Painting , чтобы ознакомиться с рабочими примерами для начала работы.

Кроме того, Swing неправильно поддерживает прозрачный фон.

Основная логика для рисования прозрачных фонов:

JPanel panel = new JPanel()
{
    protected void paintComponent(Graphics g)
    {
        g.setColor( getBackground() );
        g.fillRect(0, 0, getWidth(), getHeight());
        super.paintComponent(g);
    }
};
panel.setOpaque(false); // background of parent will be painted first
panel.setBackground( new Color(255, 0, 0, 20) );
frame.add(panel);

Проверьте Фон с прозрачностью для получения дополнительной информации.

Итак, сначала настройте рисование градиента на пользовательской панели, используя непрозрачные цвета. После того, как вы поймете, как правильно рисовать, вы можете позаботиться о прозрачности.

...