I am sure that the following is a User Error on my part, but if anyone can explain 
what I am doing wrong
I'd appreciate it:

I have a Java3D program that runs just fine on WinNT. All my geometry/behaviours etc 
are created
in a function called init() which is called from the 'main' of my first class.

Now on WinNT, the renderer runs fine for ever, however under Linux, the program 
terminates when
main() exits. I have put a sleep() into the end of the init function to prove this, 
and with the sleep at 10
seconds, my window evaporates after 10 seconds, but on Linux only, not on NT.

If anyone can help or explain, I'd appreciate it.

Rob

Start class code follows:

----snip----
package rob.ref;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;

import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.media.j3d.BranchGroup;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.VirtualUniverse;
import javax.media.j3d.Locale;

import javax.swing.JPanel;
import javax.swing.JFrame;



public class Start implements WindowListener
{
    private VirtualUniverse  u;
    private Locale   l;
    private Camera   cam;
    private static boolean  fullScreen = false;

    private JPanel   pan;
    private JFrame   win;

    public void init()
    {
 u  = new VirtualUniverse();
 l = new Locale(u);
 cam = new Camera();

 pan = new JPanel()
 {
     public Dimension getPreferredSize()
     {
  if (fullScreen)
  {
      return Toolkit.getDefaultToolkit().getScreenSize();
  }

  return new Dimension(640,400);
     }
 };

 win = new JFrame()
        {
     public void update(Graphics g)
     {
  paint(g);
     }
        };
 pan.setLayout(new BorderLayout(0,0));
 pan.add(BorderLayout.CENTER,cam.getCanvas3D());
 win.getContentPane().setLayout(new BorderLayout(0,0));
 win.getContentPane().add(BorderLayout.CENTER,pan);
 win.pack();
 win.setVisible(true);
 win.pack();
 win.setLocation(0,0);

 MaterialManager.init();
 TextureManager.init(win);
 AppearanceManager.init();

 l.addBranchGraph(cam.getBranchGroup());

 Snake s = new Snake();
 l.addBranchGraph(s.getBranchGroup());

 BackgroundLight bl = new BackgroundLight();
 l.addBranchGraph(bl.getBranchGroup());

 PositionalLamp pl = new PositionalLamp();
 l.addBranchGraph(pl.getBranchGroup());

 win.addWindowListener(this);

 for (int i = 0; i < 1; i++)
 {
     try
     {
  Thread.sleep(10000);
     }
     catch(InterruptedException e)
     {
     }
 }

    }

    public static void main(String[] args)
    {
        if ((args.length > 0) && (args[0].equals("-f")))
        {
            System.out.println("Full Screen");
            fullScreen = true;
        }

 Start s = new Start();
 s.init();
    }

    public void windowActivated(WindowEvent e)
    {
    }
    public void windowDeactivated(WindowEvent e)
    {
    }
    public void windowOpened(WindowEvent e)
    {
    }
    public void windowClosed(WindowEvent e)
    {
    }
    public void windowClosing(WindowEvent e)
    {
    }
    public void windowIconified(WindowEvent e)
    {
    }
    public void windowDeiconified(WindowEvent e)
    {
    }
}
----snip----



--


Rob Nugent
Development Manager
UniKix Technologies Europe
[EMAIL PROTECTED]
http://www.unikix.com
Tel: +44 (0) 1489 585503
Fax: +44 (0) 1489 881363



----------------------------------------------------------------------
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to