自包含.jar时初始屏幕不起作用



我为 javafx 应用程序使用启动画面功能。我使用 javafx ant 任务按顺序运行 fx:jar、fx:signjar、fx:deploy 来生成 jar 文件、jnlp 文件、html 文件和 nativeBundles,包括 "image" 和 "exe"。通过双击打包到文件中时,启动画面运行良好.jar。但是,当我通过运行.exe安装文件双击应用程序映像文件夹中的exe文件或安装程序后的快捷方式时,没有初始屏幕。为什么?exe 文件不基于 jar 文件运行?感谢您的帮助。

我遇到了同样的问题,并尝试了许多可能性(例如在fx:info下添加fx:jvmarg,fx:jvmuserargfx:splash),在我的INNO脚本中,我还尝试通过javapackager生成exe,甚至将图像格式更改为png,jpg,bmp,但当初始屏幕从自包含的 exe 包运行时,不会显示任何内容。所以我创建了自己的替代方案,可以帮助任何发现相同问题的人。

主类:

            SplashScr splash = new SplashScr ();
            splash.setVisible(true);
            MainFrame mainFrame = new MainFrame();
            SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
                @Override
                protected Void doInBackground() throws Exception {
                    Thread.sleep(2000);
                    return null;
                }
                protected void done() {
                    splash.setVisible(false);
                    mainFrame.setVisible(true);
                    splash.dispose();
                    mainFrame.startProcess(args);
                }
            };
            worker.execute();

根据加载大型机所需的时间,您可以在 Thread.sleep(2000) 中添加更多或更少的时间,甚至删除它,但重要的是此睡眠SwingWorker 中运行,否则可能不会出现飞溅

飞溅类:

public class SplashScr extends JWindow {
  public SplashScr () {
    ImageIcon image = new ImageIcon(getClass().getResource("SplashScreen.png"));
    int width = image.getIconWidth();
    int height = image.getIconHeight();
    getContentPane().add(new JLabel("", image, SwingConstants.CENTER));
    setSize(width, height);
    setLocationRelativeTo(null);
  }
}

我希望它对发现相同问题的人有用。

相关内容

  • 没有找到相关文章

最新更新