web-dev-qa-db-fra.com

JavaFX 2.0: fermeture d'une étape (fenêtre)

Je fais une application en JavaFX 2.0. Depuis ma fenêtre principale, je démarre une nouvelle fenêtre avec quelques paramètres. Après avoir réglé les paramètres, je veux appuyer sur un bouton comme "Enregistrer les modifications".

J'aimerais que ce bouton enregistre les modifications et ferme la fenêtre. En fermant, je veux dire le tuer, ne pas le placer en arrière-plan ou définir la visibilité. J'ai lu une méthode Stage.close ()

http://docs.Oracle.com/javafx/2.0/api/javafx/stage/Stage.html

Comme vous pouvez le voir, elle est similaire à la méthode Hide (), qui ne fait que masquer la fenêtre, pas la fermer.

Q: Quelqu'un connaît-il des méthodes ou a-t-il du code qui pourrait m'aider à fermer une fenêtre?

Toute aide sera grandement appréciée. Merci!

29
haakonlu

La documentation que vous avez liée indique que stage.close():

Ferme cette étape. Cet appel équivaut à hide ().

Comme hide() est équivalent à close() et close() ferme la scène, alors hide() ferme également la scène.

Lorsque toutes les étapes d'une application sont masquées (ou fermées si vous le souhaitez, car c'est la même chose), l'application se ferme. C'est déroutant, je sais, mais c'est juste la façon dont l'équipe JavaFX a décidé de nommer et de mettre en œuvre les actions.

Si vous le souhaitez, la méthode Platform.setImplicitExit (boolean) peut être utilisée pour désactiver le comportement par défaut de sortie de l'application lorsque la dernière fenêtre est fermée ou masquée.

47
jewelsea

Cela a parfaitement fonctionné pour moi (avec l'importation pour Node):

((Node)(event.getSource())).getScene().getWindow().hide();
19
Wizard4891

Pour les utilisateurs souhaitant également écouter l'événement de fermeture de fenêtre, ajoutez un filtre d'événement à la fenêtre: (cet événement est également déclenché lorsque l'utilisateur appuie sur le bouton de fermeture du système d'exploitation de l'application)

    yourWindow.addEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, event -> {
        // add your code here to handle the close event
        // use event.consume(); to prevent the application from closing
    });

Si vous devez fermer l'application avec un bouton de fermeture personnalisé, dans la méthode onAction du bouton, déclenchez l'événement:

 yourWindow.fireEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSE_REQUEST));
2
Domenico