The way I got it working (clean and fast) was to NOT extend JFrame (like GameFrame) and maintain 2 protected JFrames. The other key was to remove the Insets for the Windowed frame, as below (an extension of JFrame that has this method):
One slight problem with this is that the Insets are not set if you call:
I added a comment about this to this bug report:
As a side note, when using a KeyListener to switch modes (with ALT-ENTER), it is necessary to put the code in keyReleased instead of keyTyped, as the keyTyped never gets an "ALT-ENTER" key.
public void keyReleased(KeyEvent event)