如何同时显示闪屏和我的JFrame?

2022-04-18 00:00:00 sleep java splash-screen thread-sleep

我正在处理闪屏。我设法上了一堂课。下面是一个显示闪屏的类。我的问题是,如果我从JFrame调用这个类并运行,JFrame和Splash Screen同时运行,并且在Splash Screen应该持续的持续时间之后,它们都被关闭。如何使它们同时显示?

非常感谢

public class Splash extends JWindow {

AbsoluteLayout abs;
AbsoluteConstraints absImage, absBar;
ImageIcon image;
JLabel label;
JProgressBar bar;

public Splash() {
    abs = new AbsoluteLayout();
    absImage = new AbsoluteConstraints(0, 0);
    absBar = new AbsoluteConstraints(0, 210);
    label = new JLabel();
    image = new ImageIcon(this.getClass().getResource("anime.gif"));
    label.setIcon(image);
    bar = new JProgressBar();
    bar.setPreferredSize(new Dimension(350,10));
    this.getContentPane().setLayout(abs);
    this.getContentPane().add(label, absImage);
    this.getContentPane().add(bar, absBar);

    new Thread() {

        public void run() {
            for (int i = 0; i < 100; i++) {
                bar.setValue(i);
                try {
                    sleep(80);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Splash.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            System.exit(0);
        }
    }.start();
    this.pack();
    this.setLocationRelativeTo(null);
    this.setVisible(true);

}

}


解决方案

您认为

System.exit(0);

会出现在您的节目中吗?这是一种关闭窗口的大锤方法,因为它将导致JVM退出,关闭它正在运行的所有内容。

您是否考虑过使用Java Swing提供的SplashScreen对象?

相关文章