3

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

4

1 回答 1

2

我遇到了同样的问题,并在我的fx:deploy中尝试了许多可能性(比如在fx:info下添加fx:jvmargfx:jvmuserargfx:splash)和在我的 INNO 脚本中,我还尝试通过javapackager甚至生成 exe将图像格式更改为pngjpgbmp,但是从独立的 exe 包运行时,SplashScreen 不会出现。因此,我创建了自己的替代方案,可以帮助任何发现相同问题的人。

主类:

            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();

根据MainFrame加载所需的时间,您可以在Thread.sleep(2000)中添加或多或少的时间,甚至删除它,但重要的是此睡眠在SwingWorker内运行,否则可能不会出现启动画面。

SplashScr 类:

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);
  }
}

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

于 2016-08-24T20:47:31.577 回答