作为 JavaFX 应用程序启动画面的图像不会自动隐藏
Image as splashscreen for JavaFX application not hiding automatically
我有一个简单的 .png 图像文件,我希望在加载 JavaFX 应用程序时显示它。
我正在使用 NetBeans 作为我的 IDE 我知道可以像这样添加启动画面:
项目属性 -> 运行 -> VM 选项:-splash:path-to-image
现在启动画面正常启动,但在我的应用程序启动后它不会关闭。只是坐在屏幕上,直到我完全关闭我的应用程序。
正如文档所说 (http://docs.oracle.com/javase/7/docs/api/java/awt/SplashScreen.html) "The splash screen window is closed automatically as soon as the first window is displayed by Swing/AWT"。 JavaFX 不是 Swing 也不是 AWT 应用程序。那么如何关闭呢?
感谢任何帮助!
好的,回答我自己的问题。
在 VM 选项中设置启动时:-splash:path-to-image。
在 JavaFX 中,我能够像这样关闭它:
//Get the splashscreen
final SplashScreen splash = SplashScreen.getSplashScreen();
//Close splashscreen
if (splash != null) {
System.out.println("Closing splashscreen...");
splash.close();
}
希望这对其他人也有所帮助! ;)
虽然接受的答案是正确的,但仍有改进的余地。您不应使用 final
关键字,因为这会使初始图像挂起。此外,您可以使用内置的 isVisible()
方法检查 splash
是否可见,而不是使用 null
。
import java.awt.*;
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
SplashScreen splash = SplashScreen.getSplashScreen();
if (splash.isVisible()) {
System.out.println("Is visible");
splash.close();
}
}
}
在 AdoptOpenJDK 14 上,调用 SplashScreen.getSplashScreen()
会抛出 HeadlessException
。
为了解决这个问题,我做了:
System.setProperty("java.awt.headless", "false");
Optional.ofNullable(SplashScreen.getSplashScreen()).ifPresent(SplashScreen::close);
System.setProperty("java.awt.headless", "true");
我有一个简单的 .png 图像文件,我希望在加载 JavaFX 应用程序时显示它。
我正在使用 NetBeans 作为我的 IDE 我知道可以像这样添加启动画面: 项目属性 -> 运行 -> VM 选项:-splash:path-to-image
现在启动画面正常启动,但在我的应用程序启动后它不会关闭。只是坐在屏幕上,直到我完全关闭我的应用程序。 正如文档所说 (http://docs.oracle.com/javase/7/docs/api/java/awt/SplashScreen.html) "The splash screen window is closed automatically as soon as the first window is displayed by Swing/AWT"。 JavaFX 不是 Swing 也不是 AWT 应用程序。那么如何关闭呢?
感谢任何帮助!
好的,回答我自己的问题。
在 VM 选项中设置启动时:-splash:path-to-image。 在 JavaFX 中,我能够像这样关闭它:
//Get the splashscreen
final SplashScreen splash = SplashScreen.getSplashScreen();
//Close splashscreen
if (splash != null) {
System.out.println("Closing splashscreen...");
splash.close();
}
希望这对其他人也有所帮助! ;)
虽然接受的答案是正确的,但仍有改进的余地。您不应使用 final
关键字,因为这会使初始图像挂起。此外,您可以使用内置的 isVisible()
方法检查 splash
是否可见,而不是使用 null
。
import java.awt.*;
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
SplashScreen splash = SplashScreen.getSplashScreen();
if (splash.isVisible()) {
System.out.println("Is visible");
splash.close();
}
}
}
在 AdoptOpenJDK 14 上,调用 SplashScreen.getSplashScreen()
会抛出 HeadlessException
。
为了解决这个问题,我做了:
System.setProperty("java.awt.headless", "false");
Optional.ofNullable(SplashScreen.getSplashScreen()).ifPresent(SplashScreen::close);
System.setProperty("java.awt.headless", "true");