Hola, yo siempre uso el panel de contenido asi:
public class Window extends javax.swing.JFrame {
public Window() {
super("Prueba de JFrame");
setPreferredSize(new java.awt.Dimension(640,480));
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
getContentPane().setBackground(new java.awt.Color(255,0,0));
pack();
}
public static void main(String[] args) {
new Window().setVisible(true);
}
}