import javafx.application.Application;
import javafx.application.Platform;
import javafx.concurrent.Task;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.FlowPane;
import javafx.fxml.FXMLLoader;
public class Main extends Application {
public static Stage mainStage;
private static Stage homeStage;
@Override
public void start(final Stage primaryStage) {
Application.setUserAgentStylesheet(STYLESHEET_CASPIAN);
splashStage(primaryStage);
primaryStage.show();
//mainStage();
Task<Void> task = new Task<Void>() {
@Override
protected Void call() throws Exception {
// TODO Auto-generated method stub
for (int i = 1; i < 100; i++) {
try {
System.out.println(i);
if(i==99)
{
primaryStage.hide();
mainStage();
break;
}
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
};
new Thread(task).start();
}
public static void main(String[] args) {
launch(args);
}
public void mainStage()
{
try {
mainStage = new Stage(StageStyle.DECORATED);
FlowPane root = (FlowPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
mainStage.setScene(scene);
mainStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void homeStage()
{
try {
homeStage = new Stage(StageStyle.DECORATED);
Parent root = FXMLLoader.load(Main.class.getResource("Home.fxml"));
Scene scene = new Scene(root);
homeStage.setResizable(false);
homeStage.setScene(scene);
homeStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public void splashStage(Stage primaryStage)
{
try {
primaryStage.initStyle(StageStyle.TRANSPARENT);
FlowPane root = (FlowPane)FXMLLoader.load(getClass().getResource("Splash.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
} catch(Exception e) {
e.printStackTrace();
}
}
}
После i
достигает 99, он не будет открывать mainStage
и primaryStage
не спряталсяПочему эта страница не открывается?
функции детали следующим образом.
splashStage()
- SplashScreen
homeStage()
- Главный экран
mainStage()
- LoginScreen
Что я должен делать?
Вы пробовали использовать Platform.runLater (() -> primaryStage ......), поскольку вам нужно делать такие вещи на JavaFX Application Thread aus docs для упоминания Stage – Inge
да, я пробовал, но не работал. у вас есть идея перенаправить главный экран с экрана всплеска? –
@Keval: Попробуйте еще раз. Я тестировал его, и он работает: 'Platform.runLater (() -> { primaryStage.hide(); mainStage(); });' Если он не работает, вы не указали необходимую информацию чтобы воспроизвести проблему. (Исключение, включая stacktrace, было бы особенно важно, если оно было выбрано) – fabian