关于java中Jlabel与graphics的共存问题

因为JPanel可以放gif,我选择来当背景,问题就出现了 我重写paint()方法后,画面不显示paint图像,当我去掉JPanel后图像就出现了,是不是这两个东西不能共存,请问有没有有解决方案,谢谢了

public class GamePanel extends JFrame implements KeyListener {
    public Hero hero;
    //窗口启动与背景
    public void launchJFrame(){
        JFrame jf=new JFrame("节奏几何");
        Background background=new Background();
        //添加背景标签组件
        jf.getLayeredPane().add(background.paintBackground());
        //把窗口面板设为内容面板并设为透明、流动布局
        JPanel pan=(JPanel)jf.getContentPane();
        //组件透明
        pan.setOpaque(false);
        //面板的布局设置为flowlayout
        pan.setLayout(new FlowLayout());
        //面板添加到窗口面板
        jf.setSize(1500,800);
        //窗口将置于屏幕的中央
        jf.setLocationRelativeTo(null);
        //关闭窗口关闭程序
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //JFrame对象显示
        jf.setVisible(true);
        //窗口不可以控制大小
        jf.setResizable(false);
        //键盘监听
        jf.addKeyListener(this);
    }



    @Override
    public void paint(Graphics g){
        //hero图片
        g.drawImage(hero.img, hero.x, hero.y, hero.width, hero.height,null);
    }
    public static void main(String[] args) {
        GamePanel gamePanel=new GamePanel();
        gamePanel.launchJFrame();
    }