Swing Dialog渐变绘画问题

时间:2018-10-29 15:36:34

标签: java swing jdialog

想要绘制对话框的渐变背景

1 个答案:

答案 0 :(得分:2)

  1. 不使用根窗格或分层窗格。

  2. 请勿在JFrame或JDialog上覆盖paint()。

如果要对背景进行自定义绘制,则可以重写JPanel的paintComponent(...)方法。然后,将该面板设置为对话框的内容窗格。

请阅读Custom Painting的Swing教程中的部分,以获取入门的实用示例。

此外,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);

查看Background With Transparency了解更多信息。

因此,首先使用非透明颜色在自定义面板上进行渐变绘制。一旦了解了进行自定义绘画的正确方法,便可以担心透明度。