如果组件中没有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); } }
效果图: