Swing如何给窗体添加背景图片

下面两个类用来给窗体添加背景图片,第一个类构造方法参数是你需要放置的顶层面板,第二个类继承了可以直接获取容器

package util;

import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

/**
 * 背景面板 
 * @author 高明
 *
 */
public class LayeredPanel extends JLayeredPane {
	/**
	 * 构造方法
	 * @param str --图片路径
	 * @param panel  --组件面板
	 */
	public LayeredPanel(String str,JPanel panel) {
		
		BackGround b = new BackGround(str);
		add(b, new Integer(0)); // 添加背景,层数为0
		panel.setOpaque(false); // 将panel设为透明状态
		add(panel, new Integer(1)); // 将panel设为0层

		addComponentListener(new ComponentAdapter() {
			public void componentResized(ComponentEvent e) {
				b.setSize(getWidth(), getHeight());
				panel.setSize(getWidth(), getHeight());
			}
		});
	}
	public LayeredPanel(String str,JSplitPane panel) {
		
		BackGround b = new BackGround(str);
		add(b, new Integer(0)); // 添加背景,层数为0
		panel.setOpaque(false); // 将panel设为透明状态
		add(panel, new Integer(1)); // 将panel设为0层

		addComponentListener(new ComponentAdapter() {
			public void componentResized(ComponentEvent e) {
				b.setSize(getWidth(), getHeight());
				panel.setSize(getWidth(), getHeight());
			}
		});
	}
}
package util;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
/**
 * 带背景的窗体
 * @author 高明
 *
 */
public class LayeredFrame extends JFrame {
 public LayeredFrame() {
  setBounds(300, 200, 600, 400);
  add(new JLayeredPane());
  BackGround b = new BackGround();
  getLayeredPane().add(b);
  
  addComponentListener(new ComponentAdapter() {
   @Override
   public void componentResized(ComponentEvent e) {
    b.setSize(getWidth(),getHeight());
   }
  });
 }
}

在参考了以下两篇文章才学会这个类的写法,非常感谢他们的帮助

http://blog.csdn.net/gaowen_han/article/details/8164720
https://www.cnblogs.com/gwq369/p/5327800.html

 



你可能感兴趣的:(Swing如何给窗体添加背景图片)