我编写了primaryStage的defaultCloseOperation函数,但是我也有一个退出按钮,我想运行defaultCloseOperation。我尝试调用阶段的 close(( 和 hide(( 方法,但它立即退出而不调用我的 defaultCloseOperation 函数,但我需要调用它,因为我需要在关闭客户端时从服务器端释放所有资源。
不要在Stage
的关闭操作上执行此操作。
这就是Application.stop
方法应该用于的用途。
@Override
public void stop() throws Exception {
// TODO: release resources here
}
但是,如果有资源用于多个窗口之一,则应为onHidden
事件使用事件处理程序 - 无需扩展Stage
:
stage.setOnHidden(event -> {
// TODO: release resources here
});
你可以看到它:
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override public void handle(WindowEvent t) {
System.out.println("CLOSING");
}
});
在这里:
new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent actionEvent) {
// take some action
...
// close the dialog.
Node source = (Node) actionEvent.getSource();
Stage stage = (Stage) source.getScene().getWindow();
stage.close();
}
}
您可以在此处阅读更多解释