Wpis z mikrobloga

Mam prosty loading screen w #javafx, który działa dopóki nie chcę wstawić jakiegoś wątku który by rzeczywiście ładował różne rzeczy. Jestem nowy into javafx więc może ktoś mi wyjaśni dlaczego primaryStage.show() się nie wywołuje?

#programowanie #java


public void start(Stage primaryStage) throws Exception {
primaryStage.setResizable(false);
primaryStage.initStyle(StageStyle.UNDECORATED);
setScreenBounds();

Label label = new Label("Loading...");

ProgressBar progressBar = new ProgressBar();

GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setVgap(30);
grid.setHalignment(label, HPos.CENTER);
grid.add(label,0,0);
grid.add(progressBar,0,1);

Scene scene = new Scene(grid, screenBounds.getMaxX()/10, screenBounds.getMaxY()/10);
scene.getStylesheets().add(getClass().getResource("/css/style.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setX(screenBounds.getMaxX()-screenBounds.getMaxX()/10);
primaryStage.setY(screenBounds.getMaxY()-screenBounds.getMaxY()/10);
new Thread(() -> {
while (true){
if(primaryStage.isShowing()){
doLoadingTasks();
showMainWindow(primaryStage);
break;
}
}
}).run();
primaryStage.show();
}
  • 2
@AwizisieAkat: Nie, a powinienem?

public void doLoadingTasks(){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

public void showMainWindow(Stage stage){
stage.close();
try {
new MainWindow().start(new Stage());
} catch (Exception e) {
e.printStackTrace();
}
}