JOGL Application Design Question

Hello,

I was wondering what the best, or prefered, method for creating a JOGL application? Right now I have a Display class that handles creation of the frame and attachment of the GLCanvas, a Renderer class which is the GLEventListener, then I have an Input class which is the mouse, and keyboard listener, I have my own Animator class which creates a thread that calls the Render.display() method. Finally, I have the Main class which calls of these and passes the necissary variables to the constructors. However, it seems like a big pain in the ass to get all these elements talking to one another. It would be easier it would seem to create the Main class as a thread and so have the main game loop in the run() method. Is this bad practice? What is the approach I should be taking here? Thank you in advance.

The design you describe is pretty close to what I used for the nehe ports. I did it that way for didactical purposes. The idea was to reuse as much boilerplate code as possible and clearly separate the different components of each demo. The interesting class in each demo is the Renderer. By making the Display/Renderer/InputHandler split the Renderer isn’t cluttered with code that isn’t relevant for the demo itself (setting up the view, providing help displays, input handling, …). That was my rationale back then and it still seems valid to me now.
I’m not a game developer so I can’t argue whether this kind of design makes much sense when implementing games.

Any other ideas? Is this pretty much the method that everyone uses?