programación swing, JFrame y JPanel están configurados al mismo tamaño, JFrame siempre es más grande que JPanel
No olvides que las ventanas tienen bordes.
En WIN7, hay alrededor de 10 píxeles en ambos lados del borde
JFrame f = new JFrame("JFrameClientWidth Demo");
f.setSize (400, 300) ;
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Rectangle rc=f.getContentPane().getBounds();
Sistema .out.printf( "x=d, y=d, ancho=d, alto=d\n", rc.x, rc.y, rc.width, rc.height);
El el resultado es:
x=0, y=0, ancho=392, alto=273