我为 javafx 应用程序使用了闪屏功能。我使用 javafx ant 任务来运行 fx:jar、fx:signjar、fx:deploy 以生成 jar 文件、jnlp 文件、html 文件和 nativeBundles,包括“image”和“exe”。双击打包成 .jar 文件时,启动画面运行良好。但是,当我通过运行.exe安装文件双击应用程序映像文件夹中的exe文件或安装后的快捷方式时,没有启动屏幕。为什么?exe文件不根据jar文件运行?感谢帮助。
问问题
655 次
1 回答
2
我遇到了同样的问题,并在我的fx:deploy中尝试了许多可能性(比如在fx:info下添加fx:jvmarg、fx:jvmuserarg和fx:splash)和在我的 INNO 脚本中,我还尝试通过javapackager甚至生成 exe将图像格式更改为png、jpg、bmp,但是从独立的 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 回答