Đáng ngạc nhiên đủ, tôi đã tìm hiểu cách cắm vào màn hình giật gân tùy chỉnh dựa trên this post about user authentication and authorization.
Về cơ bản, người ta cần phải viết một lớp mới thành lập, thay vì mặc định của nền tảng:
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);
}
}
Trong lớp đó, người ta có thể tạo ra một sân khấu JavaFX, nhúng nó vào một JWindow
, và hiển thị nó:
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;
}
những điều khác cần nhớ là:
Suppress màn hình khởi động NetBeans gốc bằng cách chạy ứng dụng của bạn với tham số --nosplash
.
Gọi lớp khởi tạo tùy chỉnh của bạn bằng cách chạy ứng dụng của bạn với -J-Dnetbeans.mainclass=com.package.splash.CustomStartup
tham số
Khi link suggests lớp tùy chỉnh này phải được trên classpath khởi tạo của nền tảng, có nghĩa là bên trong thư mục platform/core
.
Rất hữu ích! Nếu tôi quyết định xây dựng một màn hình giật gân từ đầu, bất kỳ con trỏ nào về cách chạy nó thay vì bản gốc NetBeans? – Marcelo
Tôi không chắc chắn. Lớp màn hình splash hiện tại là một singleton và nếu chỉ sử dụng mẫu định vị dịch vụ bạn có thể đã tiêm màn hình giật gân của riêng bạn nhưng tiếc là nó không (Có thể cần đăng nhập một yêu cầu tính năng/lỗi NetBeans). Nhưng tôi biết nó có thể vô hiệu hóa màn hình splash mặc định sau đó bạn phải chỉ ra cách thức và thời điểm hiển thị của riêng bạn. – ughzan