1 - создайте свой экран-заставку fxml
2 - в основном свяжите экран-заставку, как здесь:
@Override
public void start(Stage primaryStage) throws Exception{
setPrimaryStage(primaryStage);
prStage = primaryStage;
Parent root = FXMLLoader.load(getClass().getResource("../gui/SplashScreen.fxml"));
Scene scene = new Scene(root);
prStage.setScene(scene);
prStage.show();
}
3 - в SplashScreenControler вам нужно сделать две вещи:
- сделать ваше действие
- загрузить экран вашего приложения
, поэтому вам нужно создать класс Task внутри вашего контроллера, какэто:
public class splashscreenController implements Initializable {
@FXML
Pane panParent;
@Override
public void initialize(URL location, ResourceBundle resources) {
new Thread(new SplashScreen()).start();
}
class SplashScreen extends Task {
@Override
public Object call() throws IOException, InterruptedException{
//make something (here thrad.sleep)
Thread.sleep(3000);
Parent root = FXMLLoader.load(getClass().getResource("your/javafx/gui.fxml"));
//need to be done after the initialized methode
Platform.runLater(new Runnable() {
@Override
public void run()
Stage stage = new Stage();
assert root != null;
Scene scene = new Scene(root);
stage.setScene(scene);
//show your principal windows
stage.
MainJavaFx.setPrimaryStage(stage);
//close your splashScreen
((Stage) panParent.getScene().getWindow()).close();
}
}
});
return null;
}
}
Если вам нужна дополнительная информация, здесь есть очень хорошее видео по теме здесь