Question

Notre application de la plate-forme maven / Netbeans utilise une image personnalisée au démarrage, en remplaçant

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

J'ai essayé en fait un .gif animé, mais seule la première image est affichée.

Comment peut-on aller peut-être au sujet de la mise en œuvre d'un écran de démarrage animé, peut-être en exécutant des animations de fenêtres JavaFX?

J'ai vu autre autre question SO , mais n'a pas été vraiment répondu -. Je préavis s'il vous plaît poser des questions sur comment intégrer un écran d'accueil personnalisé avec ma demande Netbeans plate-forme , et non comment construire réellement

Était-ce utile?

La solution

De façon surprenante, j'ai découvert comment brancher un écran d'accueil personnalisé basé sur ce post sur l'authentification de l'utilisateur et l'autorisation .

En fait, on a besoin d'écrire une autre classe de démarrage, au lieu de la valeur par défaut de la plate-forme:

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

Dans cette classe, on peut créer une étape JavaFX, l'intégrer dans un JWindow, et le montrer:

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

D'autres choses à retenir sont:

  • supprime l'affichage de l'écran de NetBeans original en exécutant votre application avec le paramètre --nosplash.

  • Appelez votre classe d'initialisation personnalisée en exécutant votre application avec le paramètre -J-Dnetbeans.mainclass=com.package.splash.CustomStartup

  • le lien suggère cette classe personnalisée doit être sur le chemin de classe d'initialisation de la plate-forme, ce qui signifie à l'intérieur du dossier platform/core.

Autres conseils

La version actuelle de la classe NetBeans qui est chargé de rendre l'écran d'accueil peut être consulté en ligne ici: org.netbeans.core.startup .

Le code coupable qui empêche le GIF d'animation est cette ligne (ligne 546)

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

Pour que le gif pour animer le ImageObserver devra préciser au lieu d'être mis à null puis repeindre doit être appelée lorsque imageUpdate() est appelée sur le ImageObserver.

Un exemple d'afficher un fichier GIF animé peut être consulté ici: relation entre Gif animé et Observateur de l'image

Pour autant que je peux vous voir ou devrez modifier le code ci-dessus de la plate-forme NetBeans et le reconstruire pour votre application ou vous devrez créer votre propre écran de démarrage à partir de zéro à utiliser au lieu de NetBeans un.

espère que vous trouverez ce utile!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top