놀랍게도 나는 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으로
사용하여 응용 프로그램을 실행하여 사용자 정의 초기화 클래스를 호출합니다.
매우 유용합니다! 만약 처음부터 스플래쉬 스크린을 만들기로 결정했다면, 네이티브 NetBeans 대신에 그것을 실행하는 방법에 대한 모든 포인터가 필요합니까? – Marcelo
잘 모르겠습니다. 현재 스플래시 화면 클래스는 싱글 톤이며 서비스 로케이터 패턴 만 사용하는 경우 자신의 스플래시 화면을 삽입 할 수는 있지만 유감 스럽지만 (NetBeans 버그/기능 요청을 로그하는 것이 유용 할 수 있습니다.) 하지만 기본 스플래시 화면을 비활성화 할 수 있다는 것을 알고 있다면 자신의 모습을 언제 어떻게 표시 할 것인지 파악해야합니다. – ughzan