为什么在我的jar中有SplashScreen-Image时会忽略setUseSystemMenuBar()?

时间:2015-11-27 10:51:25

标签: java macos javafx

我想为我的JavaFX应用程序显示启动画面图像。我之前通过设置:

为Swing应用程序做了这个
SplashScreen-Image: splash.png

在应用程序jar文件的MANIFEST.MF中。如上所述here,因为我没有显示Swing / AWT窗口,所以启动画面不会自动关闭。所以我手动关闭它:

    final SplashScreen splash = SplashScreen.getSplashScreen();
    if (splash != null) 
    {
        splash.close();
    }

问题是我的JavaFX应用程序的菜单栏没有进入系统菜单栏,它附加到应用程序,即使我正在请求它:

menuBar.setUseSystemMenuBar(true);

如果我从jar的MANIFEST.MF中删除SplashScreen-Image,菜单栏会按预期显示。

我已经考虑使用Preloader来做这件事,但因为:

而打了折扣
  • 我不需要任何反馈,因为应用程序正在启动,我只想显示简单的徽标
  • 在JVM启动之前,SplashScreen-Image非常快速地出现。使用Preloader仍然需要JVM开始显示它

这是Java中的错误吗?我能采取的其他方法是否与我习惯的Swing应用程序一样有效?

我有一个demo maven项目here。您需要编辑pom以包含/排除jar中的SplashScreen-Image。

0 个答案:

没有答案