1. It depends on what you're doing. If you're creating a full-up action game, using Swing is not the way to go
. You usually want to create your own in-game widgets to handle user events. Both APIs should be able to give you sub-views (a la Bridge Commander) without resorting to lightweight rendering.
2. Java3D is a scenegraph. That means that it allows you to create a model of what your 3D world will look like, then it will try to render that model as fast as possible. JOGL is a direct OpenGL mapping. That means that you can send commands to render polygons, but all the hard work inherent in depth sorting and world management has to be done by you and you alone.
The choice between using an existing scenegraph and your own custom engine is a decision that requires a great deal of thought and planning. The scenegraph makes things easy and will render most environments (including Quake-like environments) without too much difficulty. A custom engine, OTOH, will only be as good as you are. If you have complex requirements (for example, meshes that morph into more detail as you get closer) then a custom engine can provide. If you're just going to reimplement a standard scenegraph badly, then you're wasting your time.
Just to make your life more difficult, other Scenegraphs that are more focused on gaming include:Xith3D
- A scenegraph that attempts to be somewhat compatible with Java3D, but more gaming focused.jMonkeyEngine
- A scenegraph that is focused on being a feature-rich option for gaming.
Try lurking in the 3D forums here for more info.