2012-02-17 6 views
5

우리 받는다는/넷빈즈 플랫폼 응용 프로그램애니메이션 초기 화면은

(NBM) - 브랜딩> core.jar를> org.netbeans.core.startup> splash.gif 대체하여, 시작에서 사용자 정의 이미지를 사용

나는 애니메이션 .gif로 만들려고했지만 첫 번째 프레임 만 표시됩니다.

JavaFX 창 애니메이션을 실행하여 어떻게 애니메이션 스플래시 화면을 구현할 수 있습니까?

나는 another other SO question을 본 적이 있지만 정말 대답되지 않았다 - 나는 실제로 그것을 만드는 방법을 어떻게 내 넷빈즈 플랫폼 응용 프로그램와 사용자 정의 초기 화면을 통합하는 방법에 대한 을 요구하고 있지 않다주의하시기 바랍니다.

답변

2

놀랍게도 나는 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); 
    } 
} 

, 하나는 그것이 JWindow에 삽입하는 자바 FX 단계를 생성하고 표시 할 수 있습니다 : 기억해야 할

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 매개 변수이 사용자 정의 클래스는 platform/core 폴더 안에 의미 플랫폼의 초기화 클래스 패스에있는 link suggests으로

  • 사용하여 응용 프로그램을 실행하여 사용자 정의 초기화 클래스를 호출합니다.

1

스플래시 화면 렌더링을 담당하는 NetBeans 클래스의 현재 버전은 org.netbeans.core.startup에서 온라인으로 볼 수 있습니다.

살리는에서 GIF 방지 범인 코드는 ImageObservernull로 설정되는 대신 지정하고 칠되어야 할 것이다 애니메이션화하는 GIF 위해서는이 라인 (라인 546)

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

ImageObserver에서 imageUpdate()이 호출 될 때 호출되어야합니다.

애니메이션 GIF를 표시의 예는 여기에서 볼 수 있습니다 : Relationship Between Animated Gif and Image Observer

지금까지 내가 위의 넷빈즈 플랫폼 코드를 변경하고 응용 프로그램을 다시 작성해야 할 것 중 하나를 볼 수 있습니다 또는 당신이해야합니다으로 자체 스플래시 화면을 처음부터 만들어 NetBeans 대신 사용할 수 있습니다.

희망이 있으면 유용 할 것입니다.

+0

매우 유용합니다! 만약 처음부터 스플래쉬 스크린을 만들기로 결정했다면, 네이티브 NetBeans 대신에 그것을 실행하는 방법에 대한 모든 포인터가 필요합니까? – Marcelo

+0

잘 모르겠습니다. 현재 스플래시 화면 클래스는 싱글 톤이며 서비스 로케이터 패턴 만 사용하는 경우 자신의 스플래시 화면을 삽입 할 수는 있지만 유감 스럽지만 (NetBeans 버그/기능 요청을 로그하는 것이 유용 할 수 있습니다.) 하지만 기본 스플래시 화면을 비활성화 할 수 있다는 것을 알고 있다면 자신의 모습을 언제 어떻게 표시 할 것인지 파악해야합니다. – ughzan