swing , 用jWindow实现了简单的欢迎界面..但是显示总是压在JFrame的主界面下面.
怎么让jWindow的欢迎界面在第一层,盖住JFRAME的呢?
新生太嫩 希望不吝赐教!

解决方案 »

  1.   

    不太明白,
    如果是弹出页面是会显示在上层的。难道你的jframe是当前活动页面?
      

  2.   

    那你只用JWindow不就好了
    别用JFrame啊
    你代码怎么写的?
      

  3.   

    这是我的代码..
    在调用NEATBEANS自动产生的主界面 FRAME之前 调用一下自己的SplashWindow1,下面代码在MAIN所在的主文件里
    Frame f = new Frame();
    new SplashWindow1("/Users/Heo/NetBeansProjects/src/1.jpg" ,f ,40000); //这是用JWindow显示一个欢迎图片..现在总是压在FRAME的下面 launch(myFrame.class, args); // 这个是主要界面FRAME. 各种操作在这里
    附上JWindows显示欢迎界面类的定义.
    class SplashWindow1 extends JWindow
    {
    public SplashWindow1(String filename, Frame f, int waitTime)
    {
    super(f);
    JLabel l = new JLabel(new ImageIcon(filename));
    getContentPane().add(l, BorderLayout.CENTER);
    pack();
    Dimension screenSize =
    Toolkit.getDefaultToolkit().getScreenSize();
    Dimension labelSize = l.getPreferredSize();
    setLocation(screenSize.width/2 - (labelSize.width/2),
    screenSize.height/2 - (labelSize.height/2));
    addMouseListener(new MouseAdapter()
    {
    public void mousePressed(MouseEvent e)
    {
    setVisible(false);
    dispose();
    }
    });
    final int pause = waitTime;
    final Runnable closerRunner = new Runnable()
    {
    public void run()
    {
    setVisible(false);
    dispose();
    }
    };
    Runnable waitRunner = new Runnable()
    {
    public void run()
    {
    try
    {
    Thread.sleep(pause);
    SwingUtilities.invokeAndWait(closerRunner);
    }
    catch(Exception e)
    {
    e.printStackTrace();    
    // 能够捕获InvocationTargetException
    // 能够捕获InterruptedException
    }
    }
    };
    setVisible(true);
    Thread splashThread = new Thread(waitRunner, "SplashThread");
    splashThread.start();
    }
    }
      

  4.   

    换一种做法.可以先new 你的SplashWindow.  再sleep一小段时间,再显示主窗口.
      

  5.   

    恩 5L 这方法我用了.可以.但不是很智能..HARD CODING的等待时间用了...先
    谢谢!!!