gpt4 book ai didi

java - Netbeans 平台应用程序上的动画启动画面

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:39 24 4
gpt4 key购买 nike

我们的 maven/Netbeans 平台应用程序通过替换在启动时使用自定义图像

Nbm-branding > core.jar > org.netbeans.core.startup > splash.gif

我尝试将其设为动画 .gif,但只显示第一帧。

如何实现动画启动画面,也许通过运行一些 JavaFX 窗口动画?

我看过 another other SO question ,但它并没有得到真正的回答 - 请注意我问的是如何将自定义启动画面与我的 Netbeans 平台应用程序集成,而不是如何实际构建它。

最佳答案

令人惊讶的是,我发现了如何插入基于 this post about user authentication and authorization 的自定义启动画面。 .

基本上,需要编写另一个启动类,而不是平台默认的:

import java.lang.reflect.Method;

public class CustomStartup {

private static final String NB_MAIN_CLASS = "org.netbeans.core.startup.Main";

public static void main(String[] args) throws Exception {
// do whatever you need here (e.g. show a custom login form)
System.out.println("Hello world! I am a custom startup class");
JWindow splash = initSplash();

// once you're done with that, hand control back to NetBeans
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
Class<?> mainClass = Class.forName(NB_MAIN_CLASS, true, classloader);

Object mainObject = mainClass.newInstance();
Method mainMethod = mainClass.getDeclaredMethod("main", new Class[]{String[].class});
mainMethod.invoke(mainObject, (Object) args);

splash.setVisible(false);
}
}

在该类中,可以创建一个 JavaFX 阶段,将其嵌入到 JWindow 中,然后显示它:

public JWindow initSplash(){
JWindow window = new JWindow();
final JFXPanel fxPanel = new JFXPanel();
window.add(fxPanel);
window.setVisible(true);
window.setLocationRelativeTo(null);

Platform.runLater(new Runnable() {

@Override
public void run() {
Scene scene = new Scene(new CustomFxSplash(), 475, 300, true);
fxPanel.setScene(scene);
}
}
return window;
}

其他要记住的事情是:

  • 通过使用 --nosplash 参数运行您的应用程序来抑制原始的 NetBeans 初始屏幕。

  • 通过使用 -J-Dnetbeans.mainclass=com.package.splash.CustomStartup 参数运行您的应用程序来调用您的自定义初始化类

  • 作为link suggests此自定义类必须位于平台的初始化类路径中,即位于 platform/core 文件夹内。

关于java - Netbeans 平台应用程序上的动画启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com