2012-02-17 25 views
5

Nasz Maven/Netbeans Application Platform wykorzystuje własny obraz na starcie, zastępującAnimowane Ekran powitalny na aplikacji Netbeans Platform

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

Próbowałem zrobić animowany .gif, ale wyświetlana jest tylko pierwsza klatka.

W jaki sposób można by wprowadzić animowany ekran powitalny, być może uruchamiając niektóre animacje okna JavaFX?

Widziałem another other SO question, ale to nie było odpowiedzi - proszę zauważyć, pytam o jak zintegrować własny ekran powitalny z mojego wniosku Netbeans Platform, a nie jak faktycznie zbudować.

Odpowiedz

2

Zaskakująco, dowiedziałem się, jak podłączyć niestandardowy ekran powitalny oparty na this post about user authentication and authorization.

Zasadniczo trzeba napisać kolejną klasę rozruchu, zamiast domyślnie platformy:

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

W tej klasie, można utworzyć scenę JavaFX, osadzić go w JWindow i pokazać go:

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

Inne rzeczy do zapamiętania to:

  • zwalczaniu oryginalny ekran powitalny NetBeans, uruchamiając aplikację z parametrem --nosplash.

  • Zadzwoń niestandardowej klasy inicjalizacji, uruchamiając aplikację z parametrem

  • Jako link suggests ten zwyczaj klasa ma być na platformy inicjalizacji ścieżce klasy, czyli w folderze platform/core-J-Dnetbeans.mainclass=com.package.splash.CustomStartup.

1

Aktualna wersja klasy NetBeans odpowiedzialna za renderowanie ekranu powitalnego można obejrzeć online tutaj: org.netbeans.core.startup.

Kod winny który zapobiega Gif z animowanie jest linia (linia 546)

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

Aby gif animowanie ImageObserver muszą być określone, a nie jest ustawiony null i odświeżenia musi być wywołana, gdy imageUpdate() jest wywoływana na .

Przykładem wyświetlania animowany gif można obejrzeć tu: Relationship Between Animated Gif and Image Observer

Więc o ile widzę, będzie trzeba albo zmienić powyższy kod platformy NetBeans i odbudować go do swojej aplikacji lub trzeba będzie utwórz własny ekran powitalny od początku, zamiast używać go w wersji NetBeans.

Mam nadzieję, że okaże się to przydatne!

+0

Bardzo przydatne! Jeśli zdecyduję się zbudować ekran powitalny od początku, jakieś wskazówki jak to zrobić zamiast natywnej wersji NetBeans? – Marcelo

+0

Nie jestem pewien. Obecna klasa ekranu powitalnego jest singletonem i jeśli tylko używał wzoru lokalizatora usług, mógłbyś wstrzyknąć własny ekran powitalny, ale niestety tak nie jest (może być opłacalne zalogowanie się do zgłoszenia błędu/funkcji NetBeans). Ale wiem, że możliwe jest wyłączenie domyślnego ekranu powitalnego, wtedy musisz po prostu dowiedzieć się, jak i kiedy pokazać własne. – ughzan

Powiązane problemy