java给窗体插入背景图片总是覆盖按钮怎么办?

做了个图书管理系统,想给登录界面加个图片,但是总是覆盖按钮,无法登陆
以下是代码

package com.bbm.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import com.bbm.db.UserDao;
import com.bbm.model.Users;

/*登录窗体*/
public class Login extends JFrame{
    
    private static final Component JPanel = null;
    Font f1=new Font("黑体", Font.BOLD, 32);
    JLabel usernameJLabel,passwordJLabel;
    JTextField usernameJTF;
    JPasswordField pwdJPF;
    
    private static Users user;
    //此内部类需要放到下面的构造方法之上,否则,对象usernameJTF不识别

    class LoginAction implements ActionListener {
        @Override
        public void actionPerformed(final ActionEvent e) {
            if (!"".equals(usernameJTF.getText()) && !"".equals(new String(pwdJPF.getPassword()))) {
                user = UserDao.check(usernameJTF.getText(), new String(pwdJPF.getPassword()));
                if (user.getName() != null) {
                    try {

                        Library frame = new Library();
                        frame.setVisible(true);
                        Login.this.setVisible(false);
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "您输入的用户名或密码错误,不能登录!");
                    usernameJTF.setText("");
                    pwdJPF.setText("");
                }
            } else {
                JOptionPane.showMessageDialog(null, "请输入用户名和密码!");
            }
        }
    }
    class ResetAction implements ActionListener {
        @Override
        public void actionPerformed(final ActionEvent e) {
            usernameJTF.setText("");
            pwdJPF.setText("");

        }
    }
    
    public Login(){
        super();

        setSize(360,180); 
        //在整个界面的中间位置显示
        int width=Toolkit.getDefaultToolkit().getScreenSize().width;
        int height=Toolkit.getDefaultToolkit().getScreenSize().height;
        this.setLocation(width/2-200, height/2-150);    
        //插入背景
        getContentPane().setLayout(null);
         ImageIcon img = new ImageIcon("D:\\psu.jpg");
            JLabel jl_bg = new JLabel(img); //背景
            jl_bg.setBounds(0, 0, 360, 180); //设置位置和大小,先setLayout(null)一下。
            getLayeredPane().add(jl_bg, new Integer(Integer.MIN_VALUE));
           ((JPanel)this.getContentPane()).setOpaque(false); 

        setTitle("图书借阅系统登录界面");
        
        final JPanel textPanel=new JPanel();//提示信息面板
        final JPanel loginPanel=new JPanel();//登录信息面板
        final JPanel buttonPanel=new JPanel();//登录取消按钮面板

        //提示信息面板
        JLabel jl1=new JLabel();
        jl1.setFont(f1);
        jl1.setText("图书借阅系统");
        textPanel.add(jl1);
        this.add(textPanel,BorderLayout.NORTH);

        //登录信息面板设计
        loginPanel.setLayout(new GridLayout(2,2));
        usernameJLabel=new JLabel("用户名:");
        usernameJLabel.setHorizontalAlignment(SwingConstants.CENTER);
        
        usernameJTF=new JTextField();        
                
        passwordJLabel=new JLabel("密   码:");
        passwordJLabel.setHorizontalAlignment(SwingConstants.CENTER);
        
        pwdJPF=new JPasswordField();
                
        loginPanel.add(usernameJLabel);
        loginPanel.add(usernameJTF);
        loginPanel.add(passwordJLabel);
        loginPanel.add(pwdJPF);

        //登录取消按钮面板设计

        JButton confirmButton=new JButton("登录");
        confirmButton.addActionListener(new LoginAction());
        JButton resetButton=new JButton("重置");
        resetButton.addActionListener(new ResetAction());

            buttonPanel.add(confirmButton);
            buttonPanel.add(resetButton);
                
        this.add(loginPanel,BorderLayout.CENTER);
        this.add(buttonPanel,BorderLayout.SOUTH);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时,退出程序
        this.setVisible(true);//设置窗体显示,否则不显示。
        setResizable(false);//取消最大化

    }
      public static void setUser(Users user) {
            Login.user = user;
        }
      public static Users getUser() {
            return user;
        }
    public static void main(String[] args) {
        Login lg=new Login();        
    }
}


背景图片应该是最开始就有的,即在按钮之前就创建完毕,你的代码这边在后面编写,所以就会出现背景覆盖按钮的情况