Esta es la respuesta más correcta que encomtrarás dar, pero primero obsérvala detenidamente y analiza si es compatible a tu proyecto.
Solución:
La aplicación se detiene automáticamente cuando el último Stage
está cerrado. En este momento, el stop()
método de su Application
clase se llama, por lo que no necesita un equivalente a setDefaultCloseOperation()
Si desea detener la aplicación antes de eso, puede llamar Platform.exit()
por ejemplo en su onCloseRequest
llamar.
Puedes tener toda esta información en la página javadoc de Application
: http://docs.oracle.com/javafx/2/api/javafx/application/Application.html
Algunas de las respuestas proporcionadas no me funcionaron (javaw.exe aún se ejecuta después de cerrar la ventana) o Eclipse mostró una excepción después de que se cerró la aplicación.
Por otro lado, esto funciona perfectamente:
primaryStage.setOnCloseRequest(new EventHandler()
@Override
public void handle(WindowEvent t)
Platform.exit();
System.exit(0);
);
Como referencia, aquí hay una implementación mínima usando Java 8:
@Override
public void start(Stage mainStage) throws Exception
Scene scene = new Scene(new Region());
mainStage.setWidth(640);
mainStage.setHeight(480);
mainStage.setScene(scene);
//this makes all stages close and the app exit when the main stage is closed
mainStage.setOnCloseRequest(e -> Platform.exit());
//add real stuff to the scene...
//open secondary stages... etc...
Recuerda que puedes compartir esta división si te ayudó.