I'm trying to split the gui code from the rest, and so far it has been pretty successful - basically I'm writing wrapper functions for all gui operations, seems to be the most useful way

And join the club - I'm not a java fan either. And I'm not saying that from inexperience, I had to write a multi-retargetable optimising compiler in it, not fun (boggle.sourceforge.net)