I think that the main problem you are going to be faced with is testability of your gui application.
So regarding maintainability and ease of unit testing I am leaning towards the "Presenter first" idiom instead of Model View Controller (MVC) and other derivatives that instruct you to have the view knowing of the actual application logic (Model). The best resource is the web site of the group that introduced it as a thought.
Since using an approach like that is going to take a lot of boilerplate code to initialize the various elements of your application I would also suggest in using a dependency injection framework. I have settled with Guice.