如果组件中没有setIcon(...);这个方法,这是有需要给组件设置背景图片,这时就可以自定义绘制背景图片

/**
 * 
 */
package com.niit.javagui;

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * @author: Annie
 * @date:2016年5月31日
 * @description:
 */
public class JPanelBackgroundDemo extends JFrame{

    MyPanel panel;
    JButton bnt;
    
    public JPanelBackgroundDemo() {
        setVisible(true);
        setSize(400,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        panel = new MyPanel(new ImageIcon("./src/picture/pic12.jpg").getImage());
        setLayout(null);//不使用任何布局
        panel.setBounds(0,0,200,200);
        
        bnt = new JButton("测试按钮");
        panel.add(bnt);
        
        getContentPane().add(panel);
    }
    public static void main(String[] args) {
        new JPanelBackgroundDemo();

    }
    

}
/*自定义图片类*/
class MyPanel extends JPanel{
    //绘制容器
    Image img;
    public MyPanel(Image img) {
        this.img =img;
        //设置背景为透明,用意只是让别人能看到这张图片
    }
    @Override
    protected void paintComponent(Graphics g) {
        //获取父类原来的绘制组件的方法
        super.paintComponent(g);
        //调用父类的高度和宽度
        g.drawImage(img, 0, 0, this.getWidth(),this.getHeight(),this);
        
    }
}

效果图:

posted on 2016-05-31 13:04  王铭霞  阅读(1096)  评论(0编辑  收藏  举报