知识储备:
1.JFrame中是有很多层次关系的,具体可以去自己查一下;
在这里插入图片描述
在这里插入图片描述

主要思路:
1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
2.把窗口面板设为内容面板并设为透明、流动布局。
3.之后把组件和面板添加到窗口面板就可以;
大白话翻译
把JFrame想象成一个桌子,桌子上面有个木板,组件和面板就是木板上的物品,我们就是把桌子上的木板换为玻璃板,然后把背景图放在玻璃板下面,把物品放在玻璃板上面;

哔哩哔哩有此视频教程

示例代码:

import java.awt.FlowLayout;

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

public class ImageDemo {

	public static void main(String[] args) {
		JFrame jf=new JFrame("背景图片测试");
		//1.把图片添加到标签里(把标签的大小设为和图片大小相同),把标签放在分层面板的最底层;
		ImageIcon bg=new ImageIcon("src/images/bg.jpg");
		JLabel label=new JLabel(bg);
		label.setSize(bg.getIconWidth(),bg.getIconHeight());
		jf.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
		//2.把窗口面板设为内容面板并设为透明、流动布局。
		JPanel pan=(JPanel)jf.getContentPane();
		pan.setOpaque(false);
		pan.setLayout(new FlowLayout());
		//3.之后把组件和面板添加到窗口面板就可以;
		JButton btn=new JButton("测试按钮");
		pan.add(btn);
		jf.setSize(bg.getIconWidth(),bg.getIconHeight());
		jf.setLocationRelativeTo(null);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}

}

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐