如何在Frame里头加上图片作为背景,高手请进,在线等!

解决方案 »

  1.   

    http://blog.csdn.net/jia20003/article/details/6663801
    这里也许你可以看看
      

  2.   

    你用这个JPanel放在窗体最底层作为底层容器就好了import java.awt.Graphics;
    import java.awt.Image;import javax.swing.JPanel;@SuppressWarnings("serial")
    public class JImagePane extends JPanel {

    /**
     * 背景图片
     */
    private Image image = null;
    /**
     * 是否自适应
     */
    private boolean autoResize = false;

    /**
     * 构造方法
     */
    public JImagePane() {
    this(null, false);
    } /**
     * 构造方法
     * @param image - 图片
     */
    public JImagePane(Image image) {
    this(image, false);
    }

    /**
     * 构造方法
     * @param image - 图片
     * @param autoResize - 是否自适应
     */
    public JImagePane(Image image, boolean autoResize) {
    super();
    this.autoResize = autoResize;
    this.image = image;
    repaint();
    }

    @Override
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (image != null) {
    if (autoResize) {
    g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
    } else {
    g.drawImage(image, 0, 0, null);
    }
    }
    } /**
     * 返回背景图片
     * @return
     */
    public Image getImage() {
    return image;
    } /**
     * 设置背景图片
     * @param image - 背景图片
     */
    public void setImage(Image image) {
    this.image = image;
    repaint();
    } /**
     * 返回图片是否自适应
     * @return
     */
    public boolean isAutoResize() {
    return autoResize;
    } /**
     * 设置图片是否自适应
     * @param autoResize
     */
    public void setAutoResize(boolean autoResize) {
    this.autoResize = autoResize;
    repaint();
    }
    }
      

  3.   

    必须用JPanel ,Frame不能设置背景图片吗?
      

  4.   

    JFrame 是一个 Component,而不是 JComponent
    所以,它没有实现双缓冲
    它没有 paintComponent 方法
    如果你去重写他的 paint 方法,
    你会发现很难让你画的图片作为背景图片存在
    要不就是图片挡住了控件,要不就是图片完全看不到而根据 Swing 规范,
    每一个 JFrame 应该都有一个 JPanel 作为底层容器
    其他所有的控件都应该添加在这个 JPanel 上
    最后,setContentPane(panel) 就好了