Sorprendentemente, descubrí cómo conectar una pantalla personalizada basada en this post about user authentication and authorization.
Básicamente, hay que escribir otra clase de puesta en marcha, en lugar de por defecto de la plataforma:
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);
}
}
En esa clase, se puede crear un escenario JavaFX, incrustarla en un JWindow
, y 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;
}
Otras cosas a tener en cuenta son:
reprimir la pantalla de inicio original de NetBeans ejecutando su aplicación con el parámetro --nosplash
.
Llame a su clase de inicialización personalizada mediante la ejecución de su aplicación con el parámetro -J-Dnetbeans.mainclass=com.package.splash.CustomStartup
A medida que el link suggests esta clase personalizada tiene que estar en la ruta de clase de inicialización de la plataforma, es decir, dentro de la carpeta platform/core
.
Muy útil! Si decido crear una pantalla de bienvenida desde el inicio, ¿hay alguna sugerencia sobre cómo ejecutarla en lugar de la versión nativa de NetBeans? – Marcelo
No estoy seguro. La clase actual de la pantalla de presentación es un singleton y si solo usara el patrón de localización de servicios podría haber inyectado su propia pantalla de bienvenida, pero desafortunadamente no es así (podría valer la pena registrar una solicitud de función/error de NetBeans). Pero sé que es posible deshabilitar la pantalla de bienvenida predeterminada, entonces debes averiguar cómo y cuándo mostrar la tuya. – ughzan