5

私たちの Maven/Netbeans プラットフォーム アプリケーションは、起動時にカスタム イメージを使用します。

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

アニメーションgifにしてみましたが、最初のコマしか表示されません。

おそらくJavaFXウィンドウアニメーションを実行することによって、アニメーション化されたスプラッシュスクリーンを実装するにはどうすればよいでしょうか?

別の SO の質問を見たことがありますが、実際には回答がありませんでした。実際にビルドする方法ではなく、カスタム スプラッシュ スクリーンを Netbeans プラットフォーム アプリケーションに統合する方法について質問していることに注意してください。

4

2 に答える 2

2

驚くべきことに、ユーザー認証と承認に関するこの投稿に基づいて、カスタム スプラッシュ スクリーンをプラグインする方法を見つけました。

基本的に、プラットフォームのデフォルトではなく、別のスタートアップ クラスを記述する必要があります。

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;
}

他に覚えておくべきことは次のとおりです。

  • パラメータを指定してアプリケーションを実行することにより、元の NetBeans スプラッシュ画面を抑制し--nosplashます。

  • -J-Dnetbeans.mainclass=com.package.splash.CustomStartupパラメータを指定してアプリを実行し、カスタム初期化クラスを呼び出します

  • リンクが示唆するように、このカスタム クラスはプラットフォームの初期化クラスパス、つまりplatform/coreフォルダー内にある必要があります。

于 2012-02-21T14:50:26.723 に答える
1

スプラッシュ画面のレンダリングを担当する NetBeans クラスの現在のバージョンは、次の場所でオンラインで表示できます: org.netbeans.core.startup

gif のアニメーション化を妨げる犯人コードは、この行 (546 行目) です。

graphics.drawImage(image, 0, 0, null);

gif をアニメーション化するImageObserverには、 を に設定する代わりに を指定するnull必要がありimageUpdate()ますImageObserver

アニメーション GIF を表示する例は、ここで見ることができます:アニメーション GIF と画像オブザーバーの関係

したがって、私が知る限り、上記の NetBeans プラットフォーム コードを変更してアプリケーション用に再構築するか、NetBeans の代わりに使用する独自のスプラッシュ スクリーンを最初から作成する必要があります。

これが役に立つことを願っています!

于 2012-02-19T17:00:36.317 に答える