绘制背景图像

我绘制的图像是我的背景图像,一切都很好但是当我试图在框架中添加一些JButton时,整个业务出错了我绘制的图片消失了,我看到了原始背景。

图片看起来像这样:

public void paint(Graphics g){ g.drawImage(bg, 0, 0, null); } 

我想我的问题是paint方法的问题,需要提一下我正在扩展JFrame类。

编辑:这里有一些图片来展示我的意思。

它首先绘制我的图像: 在此处输入图像描述

当我将鼠标移动到我应该绘制的按钮的位置时,这就是我得到的: 在此处输入图像描述

在此处输入图像描述

 import java.awt.*; import java.awt.image.BufferedImage; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.net.URL; import javax.imageio.ImageIO; public class FrameWithBG { public static void main(String[] args) throws Exception { URL url = new URL("http://i.stack.imgur.com/OVOg3.jpg"); final BufferedImage bg = ImageIO.read(url); Runnable r = new Runnable() { @Override public void run() { JPanel c = new PanelWithBackgroundImage(bg); c.setLayout(new GridLayout(0,5,16,16)); c.setBorder(new EmptyBorder(10, 10, 10, 10)); for (int ii = 1; ii < 26; ii++) { c.add(new JButton("Button " + ii)); } JFrame f = new JFrame(c.getClass().getSimpleName()); f.add(c); f.pack(); f.setVisible(true); } }; // Swing GUIs should be created and updated on the EDT // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html SwingUtilities.invokeLater(r); } } class PanelWithBackgroundImage extends JPanel { Image bg; PanelWithBackgroundImage(Image bg) { this.bg = bg; } @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(bg, 0, 0, getWidth(), getHeight(), this); } }