如何在现有 java 应用程序中添加启动画面

How to add splash screen in existing java application

这是我现有的主要 window 应用程序,我想为其添加启动画面。我为初始屏幕创建了另一个 JFrame。 我试过制作启动画面 JFrame 的对象并制作它 visible=true 并且 尝试制作静态方法并使用它们,仍然无法正常工作。

        public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Splash_UI window = new Splash_UI();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

这是我在其中添加了启动画面的旧计算器项目的示例 这是计算器 class(Application Window) 在这里我制作了 Splash Class 的对象 并将可见设置为 true。

您必须从代码中删除以下两行

EventQueue.invokeLater(new Runnable() {
            public void run() {  

其余我还添加了一个进度条,如下所述。

public static void main(String[] args) {
                try {
                    Splash splash = new Splash();
                    Calculator window = new Calculator();
                    splash.setVisible(true);
                    
                    for(int i = 0;i <= 100; i++) {
                        Thread.sleep(i);
                        splash.setProgressBar(i);
                        splash.setLblpercentage(Integer.toString(i)+"%");
                        if (i == 100) {
                            splash.dispose();
                                window.frame.setVisible(true);
                            }
                    }
                    
                } catch (Exception e) {
                    e.printStackTrace();
                }

确保从初始屏幕的 JFrame 中删除 main 方法。

此外,使框架的组件静态化以从主 class 访问它们并生成 getter 和设置器。

private static JProgressBar progressBar; 
    private static JPanel frame;
    private static JLabel lblpercentage;
    
    
    public static JLabel getLblpercentage() {
        return lblpercentage;
    }
    public static void setLblpercentage(JLabel lblpercentage) {
        Splash.lblpercentage = lblpercentage;
    }
    public static JProgressBar getProgressBar() {
        return progressBar;
    }
    public static void setProgressBar(JProgressBar progressBar) {
        Splash.progressBar = progressBar;
    }

只需删除它并使 Splash JFrame 的对象class 使其可见或根据需要使用它。

 EventQueue.invokeLater(new Runnable() {
            public void run() {
                          }
                       });