2017-10-12 1 views
0

Sur mon application, il y a une fenêtre principale et une secondaire pour certaines modifications. Lorsque l'utilisateur veut fermer l'application (= fenêtre principale), je veux demander à l'utilisateur la confirmation de la fermeture de la fenêtre secondaire des changements pour éviter d'être perdu des changements.JavaFx: Comment ma fenêtre principale peut-elle demander la confirmation de fermeture à cause d'une fenêtre secondaire ouverte?

Ce code est sur ma classe principale.

Mon problème est que je ne peux pas vérifier depuis ma classe principale si la fenêtre secondaire est ouverte ou non.

Remarque: La fenêtre secondaire est en cours de création sur ma classe de contrôleur principal.

Merci!

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception { 

     Parent root = FXMLLoader.load(getClass().getResource("Main.fxml")); 

     Scene scene = new Scene(root); 
     scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 
     primaryStage.getIcons().add(new Image("image.png")); 
     primaryStage.setTitle("Κάβα ποτών"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
     primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() { 
      @Override 
      public void handle(WindowEvent event) { 
      event.consume(); 
      closing(); 
      } 
     }); 

    } 

    public void closing() { 
     //if(the secondary window is closed) 
       //Platform.exit(); 
     //else 
       //ask confirmation with confirm alert 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 
+0

Bienvenue dans Stack Overflow! Envisagez d'accepter la réponse ci-dessous en cliquant sur la coche à côté de celle-ci. Cela aidera à la fois @HungryCosmos en leur donnant plus de rep et de futurs utilisateurs à la recherche de questions similaires en leur faisant savoir que celui-ci a une réponse acceptée. – MMAdams

Répondre

1

méthode Utilisez isShowing ne déterminer si SecondaryStage est ouvert.

Pour l'utiliser, vous devez affecter SecondaryStage à une variable lorsque vous créez la scène et y accédez en la rendant publique ou en fournissant des getters.

And this is how to access controller from your Main class.

Hope it helps.

+0

Cela fonctionne! Thx homme! Finalement, c'était plus facile que je ne le pensais! : P –