Domanda

Il nostro / applicazione piattaforma Netbeans Maven utilizza un'immagine personalizzata all'avvio, sostituendo

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

Ho provato rendendolo un animato GIF, ma viene visualizzato solo il primo fotogramma.

Come sarebbe uno possibilmente andare sull'implementazione di una splash screen animato, forse eseguendo alcune animazioni delle finestre JavaFX?

Ho visto un'altra altra domanda SO , ma non è stato in realtà risposto -. preavviso si prega sto chiedendo di come integrare una schermata iniziale personalizzata con la mia domanda Netbeans Platform , e non come costruire in realtà

È stato utile?

Soluzione

Sorprendentemente, ho trovato il modo di collegare una schermata iniziale personalizzata basata su questo post su autenticazione utente e l'autorizzazione .

In sostanza, uno ha bisogno di scrivere un'altra classe di start-up, invece di default della piattaforma:

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

In questa classe, si può creare una fase di JavaFX, incorporarlo in un JWindow, e mostrarla:

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

Altre cose da ricordare sono:

  • sopprimere la NetBeans originali Splash Screen eseguendo la vostra applicazione con il parametro --nosplash.

  • Chiama la classe di inizializzazione personalizzato eseguendo la vostra applicazione con il -J-Dnetbeans.mainclass=com.package.splash.CustomStartup parametro

  • Mentre il link suggerisce questa classe personalizzata deve essere sul percorso di classe di inizializzazione della piattaforma significato all'interno della cartella platform/core.

Altri suggerimenti

La versione corrente della classe NetBeans che è responsabile per il rendering la schermata iniziale possono essere visualizzate on-line qui: org.netbeans.core.startup .

Il codice colpevole che impedisce il GIF da animare è questa linea (line 546)

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

Affinché il GIF animare la ImageObserver dovrà essere specificata anziché essere impostato per null e quindi ridisegno deve essere chiamato quando imageUpdate() viene chiamato sul ImageObserver.

Un esempio di visualizzazione di una gif animata può essere vista qui: Relazione tra Gif Animate e Observer immagine

Quindi, per quanto posso vedere si sia necessario cambiare il sopra NetBeans codice della piattaforma e ricostruirlo per la vostra applicazione o si dovrà creare il proprio schermata iniziale da zero da usare al posto delle NetBeans uno.

Spero hai trovato utile!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top