如何隐藏窗口

时间:2018-02-16 00:09:30

标签: java swing awt

我有两个jframe窗口,我想在一段时间后隐藏NewJFrameSplash窗口但是我在使用 setVisible(true)成功时遇到了问题 我能做错什么?

代码显示我启动NewJFrameSplash窗口,并在一段时间结束时启动NewJFrame并隐藏NewJFrameSplash。

static NewJFrameSplash frame;
    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new NewJFrameSplash().setVisible(true);             
        }
    });

 try {
 Thread.sleep(5000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 new NewJFrame().setVisible(true);
 frame = new NewJFrameSplash();
 frame.setVisible(false);
}

1 个答案:

答案 0 :(得分:0)

不要使用Thread.sleep(5000);,您可能会遇到阻止事件调度线程的风险,或者,如果您使用第二个线程,则会违反API的单线程特性。

相反,请改用Swing Timer

new NewJFrame().setVisible(true);只是打开一个新窗口并使其可见,两次。您需要在之前创建的窗口实例上使用setVisible(false)

作为一个基本的例子......

EventQueue.invokeLater(new Runnable() {
    @Override
    public void run() {
        NewJFrameSplash frame = new NewJFrameSplash();
        frame.setVisible(true);
        javax.swing.Timer timer = new javax.swing.Timer(5000, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(false);
                // Create next window
            }
        });
        timer.setRepeats(false);
        timer.start();
    }
});

请查看How to use Swing Timers了解详情

Swing还提供"闪屏"支持。您应该仔细查看How to create a splash screen了解更多详情