You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX中实现退出按钮的确认对话框(含是/否选项)

实现JavaFX退出按钮的确认对话框功能

没问题,咱们可以借助JavaFX内置的Alert组件来实现这个需求,直接修改你现有的按钮事件逻辑就可以了。具体做法是在点击按钮时先弹出确认对话框,根据用户的选择再决定是否关闭窗口。

修改后的完整代码

// 记得先导入必要的类
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;

// 你的原有按钮创建代码
Button button = new Button("Exit");
gridPane.add(button, 12, 12);

// 修改后的事件处理逻辑
button.setOnAction(e -> {
    // 创建确认类型的对话框
    Alert confirmationAlert = new Alert(Alert.AlertType.CONFIRMATION);
    confirmationAlert.setTitle("确认退出");
    confirmationAlert.setHeaderText(null); // 可以根据需要设置头部文本,这里设为null隐藏
    confirmationAlert.setContentText("确定要离开吗?");

    // 显示对话框并获取用户的选择
    confirmationAlert.showAndWait().ifPresent(buttonType -> {
        if (buttonType == ButtonType.OK) { // 对应“是(确认离开)”选项
            primaryStage.close();
        }
        // 如果用户选择取消,什么都不用做,对话框会自动关闭
    });
});

代码说明

  • 我们创建了一个CONFIRMATION类型的Alert,这种类型的对话框默认就带有“确定”和“取消”按钮,正好匹配你的需求。
  • 使用showAndWait()方法阻塞当前线程,直到用户做出选择,再通过ifPresent()处理选择结果。
  • 如果用户点击“确定”(ButtonType.OK),就执行primaryStage.close()关闭窗口;如果点击“取消”,则无需额外操作,对话框会自动关闭。

如果需要自定义按钮文本(比如把默认按钮改成“是(确认离开)”和“否(取消离开)”),可以用下面的方式创建自定义按钮:

ButtonType confirmButton = new ButtonType("是(确认离开)");
ButtonType cancelButton = new ButtonType("否(取消离开)");
Alert confirmationAlert = new Alert(Alert.AlertType.CONFIRMATION, "确定要离开吗?", confirmButton, cancelButton);

之后判断用户选择时,用buttonType == confirmButton来匹配确认操作即可。

内容的提问来源于stack exchange,提问作者okmijn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:54:43