Problema para chamar método paint em java

Bom dia, sou novo em java e estou enfrentando problemas para chamar meu método paint dentro de um JFrame. Quero inserir a Imagem “BarraSuperior” e os desenhos criados dentro do JFrame Map. Ao chamar a classe o JFrame é criado, porem está vazio.


package Game;

import java.awt.Color;
import java.awt.Graphics;

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

public class Mapa extends JPanel{
	
	public JFrame Map = new JFrame ("SNAKE GAME");
	public ImageIcon BarraSuperior;
	

	public Mapa ()
	{
		InterfaceMapa ();
	}
	
	public void InterfaceMapa ()
	{
		Map.setBounds(10, 10, 905, 700);
		Map.setBackground(Color.DARK_GRAY);
		Map.setResizable(false);
		Map.setVisible(true);
		Map.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
	}
	
	public void paintComponent (Graphics g)
	{
		
		BarraSuperior = new ImageIcon ("BarraSuperior.jpg");
		BarraSuperior.paintIcon(this, g, 25, 11);
		
		// Borda do Mapa
		g.setColor (Color.WHITE);
		g.drawRect(24, 74, 851, 577);
		
		// Mapa
		g.setColor(Color.WHITE);
		g.fillRect(25, 75, 850, 575);
	}
}

Seu código tem uma organização estranha. Onde está o método main? Está usand a thread do Swing?

No seu paintComponent, parece que falta a chamada ao super.paintComponent(g), que faz a pintura do componente pai. Isso pode ser a causa de parte do seus problemas. Ficaria assim:

@Override
public void paintComponent (Graphics g){
  super.paintComponent(g);
  // resto do código

Sobre a thread do Swing, ela trata de como iniciar a janela que conterá sua aplicação. Veja um exemplo aqui: https://stackoverflow.com/questions/21964768/simple-java-2d-graphics-draw-a-rectangle

Abraço.