2012-04-18 22 views
24

Sto creando un'applicazione in JavaFX 2.0. Dalla mia finestra principale sto iniziando una nuova finestra con alcune impostazioni. Dopo aver regolato le impostazioni, desidero premere un pulsante come "Salva modifiche".JavaFX 2.0: chiusura di una fase (finestra)

Vorrei questo pulsante per salvare le modifiche e chiudere la finestra. Concludendo intendo ucciderlo, non posizionandolo sullo sfondo o impostando la visibilità. Ho letto di un metodo Stage.close()

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

Come si può vedere che è simile al metodo Hide(), che nasconde solo la finestra, non chiuderlo.

D: Qualcuno conosce qualche metodo o ha un codice che mi aiuti a chiudere una finestra?

Tutti gli aiuti saranno molto apprezzati. Grazie!

+0

http://stackoverflow.com/questions/13567019/close-fxml-window-by-code-javafx –

risposta

41

la documentazione afferma collegate che stage.close():

Chiude questa fase. Questa chiamata è equivalente a hide().

Come hide() è equivalente a close() e close() chiude la fase, poi hide() chiude anche la fase.

Quando tutte le fasi di un'applicazione sono nascoste (o chiuse se preferite, perché è la stessa cosa), l'applicazione si chiude. Confondendo, lo so, ma questo è solo il modo in cui il team JavaFX ha deciso di nominare e implementare le azioni.

Se lo si desidera, è possibile utilizzare il metodo Platform.setImplicitExit(boolean) per disattivare il comportamento predefinito di uscire dall'applicazione quando l'ultima finestra è chiusa o nascosta.

+0

Grazie per spiegare , ha davvero aiutato la mia comprensione! :) – haakonlu

+0

Mi chiedo se Window.hide() sia anche equivalente a Stage.hide() e quindi Stage.close() se una finestra è l'unica finestra dello stage? Quindi non avrei bisogno di passare un riferimento al palco. –

+0

Non capisco il tuo commento stefan. Potresti voler creare una nuova domanda. – jewelsea

15

questo ha funzionato perfettamente per me (con l'importazione per Node):

((Node)(event.getSource())).getScene().getWindow().hide(); 
+0

Sto cercando di nascondere la finestra da menuitem ActionEvent ma ottenendo l'eccezione "menuitem non può essere trasmesso al nodo". Ecco l'eccezione 'Causato da: java.lang.ClassCastException: javafx.scene.control.MenuItem non può essere lanciato su javafx.scene.Node' –

Problemi correlati