如何在javafx中调用阶段的默认关闭操作?
我编写了primaryStage的defaultCloseOperation函数,但我也有一个退出按钮,我想运行defaultCloseOperation。如何在javafx中调用阶段的默认关闭操作?,java,javafx,exit,Java,Javafx,Exit,我编写了primaryStage的defaultCloseOperation函数,但我也有一个退出按钮,我想运行defaultCloseOperation。 我试图调用stage的close()和hide()方法,但它在没有调用defaultCloseOperation函数的情况下立即退出,但我需要调用它,因为我需要在关闭客户端时释放服务器端的所有资源。不要在stage的关闭操作中执行此操作 这就是该方法的用途 @Override public void stop() throws Except
我试图调用stage的close()和hide()方法,但它在没有调用defaultCloseOperation函数的情况下立即退出,但我需要调用它,因为我需要在关闭客户端时释放服务器端的所有资源。不要在
stage的关闭操作中执行此操作
这就是该方法的用途
@Override
public void stop() throws Exception {
// TODO: release resources here
}
但是,如果有用于多个窗口之一的资源,则应为onHidden
事件使用事件处理程序-无需扩展Stage
:
stage.setOnHidden(event -> {
// TODO: release resources here
});
请勿在阶段的关闭操作中执行此操作
这就是该方法的用途
@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");
}
});
stage.setOnCloseRequest(新的EventHandler(){
@重写公共无效句柄(WindowEvent t){
系统输出打印项次(“关闭”);
}
});
在这里:
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();
}
}
neweventhandler您可以看到它:
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override public void handle(WindowEvent t) {
System.out.println("CLOSING");
}
});
stage.setOnCloseRequest(新的EventHandler(){
@重写公共无效句柄(WindowEvent t){
系统输出打印项次(“关闭”);
}
});
在这里:
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();
}
}
neweventhandler您能再解释一下这应该做什么吗?调用stage.close()
将不会调用onCloseRequest()
处理程序。不清楚你是否打算这样做。如果希望事件处理程序无论窗口如何关闭都能被调用,那么应该使用stage.setOnHidden()
。您能再解释一下这应该做什么吗?调用stage.close()
将不会调用onCloseRequest()
处理程序。不清楚你是否打算这样做。如果希望无论窗口如何关闭都能调用事件处理程序,则应使用stage.setOnHidden()
。