hola chiko bueno aki hay un ejemplo, suponiendo que vamos a usar el panel principal del frame y está con border layout esto sería como para ponerlo al medio. Puede que haya código innecesario o algo así pero no importa ahi ves.
BufferedImage logo = javax.imageio.ImageIO.read (new File ("logo.jpg")); // falta try
PanelLogo panelLogo = new PanelLogo (frame.getContentPane(), logo);
frame.getContentPane().add (panelLogo, BorderLayout.CENTER);
-----------------------------
import java.awt.*;
import javax.swing.*;
public class PanelLogo extends JPanel
{
JPanel padre;
BufferedImage logo;
public PanelLogo(JPanel padre, BufferedImage logo)
{
super();
this.padre = padre;
this.logo = logo;
int ancho = 1, alto = 1;
if (logo!=null)
{
ancho = logo.getWidth ();
alto = logo.getHeight ();
}
Dimension porte = padre.getSize();
setBounds ((porte.width-ancho)/2, (porte.height-alto)/2, ancho, alto);
}
public void paintComponent (Graphics g)
{
Dimension porte = padre.getSize();
int ancho = 1, alto = 1;
if (logo!=null)
{
ancho = logo.getWidth ();
alto = logo.getHeight ();
}
setBounds ((porte.width-ancho)/2, (porte.height-alto)/2, ancho, alto);
if (logo!=null)
{ ((Graphics2D)g).drawImage (logo, null, 0, 0); }
}
}