利用JLable类的构造方法或方法加载图片

ImageIcon image = new ImageIcon("D:\\背景.jpg");
JLabel jlable = new JLabel(image);
// JLabel jLabel = new JLabel();
// jLabel.setIcon(image);
 

当我们需要设置窗体的背景图,并将一些组件放到背景图上时,发现组件并不会显示出来。此时我们可以使用JLayeredPane类来实现。

// 创建一个JLayeredPane用于分层的。
JLayeredPane layeredPane = new JLayeredPane();
// 获取图片
ImageIcon image = new ImageIcon("D:\\背景.jpg");
// JLabel用于存放背景图片,作为背景添加到JPanel上
JLabel jlable = new JLabel(image);
// 创建JPanel,并将JLabel添加
JPanel jpanel = new JPanel();
// 设置JPanel大小为背景图片大小
jpanel.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
jpanel.add(jlable);
JButton button=new JButton("hello");
button.setBounds(0,75,200,75);
//将jpanel放到JLayeredPane的最底层
layeredPane.add(jpanel,JLayeredPane.DEFAULT_LAYER);
//将button放到jpanel高一层的地方
layeredPane.add(button,JLayeredPane.MODAL_LAYER);
//设置窗体
this.setLayeredPane(layeredPane);
this.setSize(image.getIconWidth(),image.getIconHeight());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

二、设置Button组件

# 将按钮填充的背景图改为透明
button1.setContentAreaFilled(false);
# 将按钮的边框隐藏	
button2.setBorder(null);

测试案例:

public class myFrame extends JFrame {
    public myFrame() {
        // 创建一个JLayeredPane用于分层的。
        JLayeredPane layeredPane = new JLayeredPane();
		// 获取图片
        ImageIcon image = new ImageIcon("C:\\Users\\28194\\Pictures\\Camera Roll\\地球.png");
		// JLabel用于存放背景图片,作为背景添加到JPanel上
        JLabel jlable = new JLabel(image);
		// 创建JPanel,并将JLabel添加
        JPanel jpanel = new JPanel();
		// 设置JPanel大小为背景图片大小
        jpanel.setBounds(0,0,300,400);
        jpanel.add(jlable);
        JButton button1=new JButton("hello");
        button1.setBounds(0,75,100,75);
        button1.setContentAreaFilled(false);
        button1.setBorder(null);
        JButton button2 = new JButton("world");
        button2.setBounds(200,75,100,75);
        button2.setContentAreaFilled(false);
        button2.setBorder(null);
		//将jpanel放到JLayeredPane的最底层
        layeredPane.add(jpanel,JLayeredPane.DEFAULT_LAYER);
		//将button放到jpanel高一层的地方
        layeredPane.add(button1,JLayeredPane.MODAL_LAYER);
        layeredPane.add(button2,JLayeredPane.MODAL_LAYER);
		//设置窗体
        this.setLayeredPane(layeredPane);
        this.setSize(400,400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    public static void main(String[] args) {
        myFrame myjframe =  new myFrame();

三、设置字体大小和颜色

Font f = new Font("隶书",Font.PLAIN,30);
设置按钮字体
button.setFont(f);
设置字体的颜色
button.setForeground(Color.RED);

四、设置组件的背景色

setBackgroud()

五、综合测试案例

import javax.swing.*;
import java.awt.*;
public class MyJFrame extends JFrame {
    Font f = new Font("隶书",Font.PLAIN,30);
    Font f_user = new Font("隶书",Font.PLAIN,17);
    JButton jb1,jb2,jb3,jb4,jb5,jb6;
    public MyJFrame () {
        //创建一个JLayeredPane用于分层的。
        JLayeredPane layeredPane=new JLayeredPane();
        //获取图片
        ImageIcon image=new ImageIcon("C:\\Users\\28194\\Pictures\\Saved Pictures\\背景.jpg");
        //JLabel用于存放背景图片,作为背景添加到JPanel上
        JLabel jl=new JLabel(image);
        //创建JPanel,并将JLabel添加
        JPanel jp=new JPanel();
        //设置JPanel大小为背景图片大小
        jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
        jp.add(jl);
        JLabel jLabel_title = new JLabel("教务管理系统");
        jLabel_title.setBounds(25,0,200,90);
        jLabel_title.setFont(f);
        JLabel jLabel_user = new JLabel("用户:user");
        jLabel_user.setBounds(700,0,100,90);
        jLabel_user.setFont(f_user);
        JPanel jPanel_label = new JPanel();
        jPanel_label.setLayout(null);
        jPanel_label.setBackground(Color.cyan);
        jPanel_label.setBounds(0,0,image.getIconWidth(),90);
        jPanel_label.add(jLabel_title);
        jPanel_label.add(jLabel_user);
        //创建测试按钮
        jb1=new JButton("系别管理");
        jb1.setBounds(0,75,200,75);
        jb1.setFont(f);
        jb1.setForeground(Color.RED);
        jb1.setContentAreaFilled(false);
        jb1.setBorder(null);
        jb2=new JButton("课程管理");
        jb2.setContentAreaFilled(false);
        jb2.setBorder(null);
        jb2.setBounds(0,150,200,75);
        jb2.setFont(f);
        jb2.setForeground(Color.RED);
        jb3=new JButton("成绩管理");
        jb3.setContentAreaFilled(false);
        jb3.setBorder(null);
        jb3.setBounds(0,225,200,75);
        jb3.setFont(f);
        jb3.setForeground(Color.RED);
        jb4=new JButton("学生资料查询");
        jb4.setContentAreaFilled(false);
        jb4.setBorder(null);
        jb4.setBounds(0,300,200,75);
        jb4.setFont(f);
        jb4.setForeground(Color.RED);
        jb5=new JButton("学生成绩查询");
        jb5.setContentAreaFilled(false);
        jb5.setBorder(null);
        jb5.setBounds(0,375,200,75);
        jb5.setFont(f);
        jb5.setForeground(Color.RED);
        jb6=new JButton("数据分析");
        jb6.setContentAreaFilled(false);
        jb6.setBorder(null);
        jb6.setBounds(0,450,200,75);
        jb6.setFont(f);
        jb6.setForeground(Color.RED);
        JPanel jPanel = new JPanel();
        jPanel.setLayout(null);
        jPanel.setBackground(Color.darkGray);
        jPanel.setBounds(0,100,200,image.getIconHeight());
        jPanel.add(jb1);
        jPanel.add(jb2);
        jPanel.add(jb3);
        jPanel.add(jb4);
        jPanel.add(jb5);
        jPanel.add(jb6);
        //将jp放到JLayeredPane的最底层
        layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER);
        //将jb放到jp高一层的地方
        layeredPane.add(jPanel_label,JLayeredPane.MODAL_LAYER);
        layeredPane.add(jPanel,JLayeredPane.MODAL_LAYER);
        //设置窗体
        this.setLayeredPane(layeredPane);
        this.setSize(image.getIconWidth(),image.getIconHeight());
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
   public static void main(String[] args) {
        MyJFrame myjframe = new MyJFrame();