我为 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:jvmuserarg和fx: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);
}
}
我希望它对发现相同问题的人有用。