嵌套面板与背景图像?

时间:2015-12-10 09:26:19

标签: java swing

我有两个面板定义如下:

public class JPanel_with_BG extends JPanel
{
    private Image bg_image;

    public JPanel_with_BG(Image bg_image)
    {
        this.bg_image = bg_image;
    }

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);

        if (bg_image != null)
        {
            g.drawImage(bg_image, 0, 0, this);
        }           
    }
}

public class MPanel extends JPanel
{
    public void paint(Graphics g)
    {
        super.paint(g);
        // draw something...
    }
}

然后,我想在bg_pnl上添加第二个面板。顶部面板较小,如bg_pnl.size = pnl + 2 * padding。

MPanel pnl = new MPanel();
JPanel bg_pnl = new JPanel_with_BG(image);
int pad = 50;
bg_pnl.setBorder(new EmptyBorder(pad, pad, pad, pad));      
bg_pnl.add(pnl);

问题是我在顶部面板上绘制的内容不可见。我能看到的只是背景图片。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

你的代码似乎没问题。我在我的最后尝试了这个,我可以在我的UI上看到一个显示cmnel的小区域。您需要验证显示此组件的面板的大小。

由于窗口的尺寸,可能会出现该区域不可见的情况。面板的默认布局也是流布局,它根据它们的大小排列添加的组件,如果它们非常小,则可能不可见