我有两个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);
}
答案 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了解更多详情