Without restarting X11, I did xmonad --recompile and still see grey screens when starting Java apps.
Last I'd heard, recent Java 7 was still broken in some way that ICCCMFocus can't fix. But ICCCMFocus only addresses focus issues, not gray windows; that part is generally dealt with by forcing the window manager name to one that is recognized as non-reparenting, to turn off a bit of questionable design in the JVM. (I had been under the impression this wasn't necessary in Java 7, but I don't know for certain.)
That said, try using EwmhDesktops (which adds in the known gray-window fixes automatically) or adding (setWMName "LG3D") to the StartupHook (or myStartupHook in your config).
--