Java3D compiler Err regarding restricted access

Trying to replace model in a scene with a new one, loaded using JFileChooser dialog box and here is what I get:


D:/Java Programming/Java3D/Code/Project/Java3DModelViewer1_0/VirtualWo
rld/Loaders/models/clipper.3ds
Exception in thread “AWT-EventQueue-0” javax.media.j3d.RestrictedAcces
sException: Group: only a BranchGroup node may be added
at javax.media.j3d.Group.addChild(Group.java:260)
at VirtualWorld.VirtualWorld.createSceneGraph(VirtualWorld.jav
a:157)
at VirtualWorld.Loaders.LoadFileAction.actionPerformed(LoadFil
eAction.java:135)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Sour
ce)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown
Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown
Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Un
known Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown S
ource)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown So
urce)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source
)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unkno
wn Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown
Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Here is the code that causes it:

  // Open Dialog
          if ( evt.getSource() == open )
        {
                       int returnVal = openDialogBox.showOpenDialog(
                                 LoadFileAction.this);

              // File was Chosen, send it to NewModelLoader
              if ( returnVal == JFileChooser.APPROVE_OPTION ) 
              {
                      File file = openDialogBox.getSelectedFile();
                    
                    fileName = openDialogBox.getSelectedFile().toString();

                    System.out.println( fileName.replace( '\\', '/' ) );
                      // Handle Log, and NewModelLoader
                        log.append("Opening: " + file.getName() + "." + newLine);
                        log.append("Opening: " + file.getPath() + "." + newLine);
        
                    // Load New Model
                    vW.scene.detach();
                    vW.fileName = fileName.replace( '\\', '/' );
                    vW.scene = vW.createSceneGraph();
                    vW.simpleU.addBranchGraph( vW.scene );
                    System.out.println( fileName.replace( '\\', '/' ) + " loaded." );
                                                     
                  } 
              else 
              {
                        log.append("Open command cancelled." + newLine);
              }
        
              log.setCaretPosition(log.getDocument().getLength());
        }

Please help
Thanks
Dust

Now I am getting this:

Exception in thread “AWT-EventQueue-0” javax.media.j3d.CapabilityNotSe
tException: Group: no capability to append children
at javax.media.j3d.Group.addChild(Group.java:263)
at VirtualWorld.VirtualWorld.createSceneGraph(VirtualWorld.jav
a:157)

Pls Help if you can!

Regards,
Dust }{-_-}{ Worm

Alright, problem solved.
Actually the only thing i had to do was put all TransformGorups into createSceneGraph()

New Problem:
It looks like my garbage collector doesnot work.
When I load new Model the old one is not being garbage collected.

Any clues on how to do it.

Code that was suppose to do that is
scene.detach();