首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaFX对话框在关闭后显示为阻塞,未正确解除

是因为对话框的关闭操作没有正确处理导致的。在JavaFX中,对话框通常是通过调用showAndWait()方法来显示的,该方法会阻塞当前线程直到对话框关闭。

要解决这个问题,可以采取以下步骤:

  1. 确保对话框的关闭按钮或其他关闭操作正确绑定了关闭事件处理器。可以使用setOnCloseRequest()方法来设置关闭事件处理器,当用户点击关闭按钮时,会触发该事件处理器中的代码。
  2. 在关闭事件处理器中,调用对话框的close()方法来关闭对话框。这样可以确保对话框正确关闭,并解除阻塞。

下面是一个示例代码,展示了如何正确处理JavaFX对话框的关闭操作:

代码语言:txt
复制
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class DialogExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button showDialogButton = new Button("Show Dialog");
        showDialogButton.setOnAction(event -> {
            Dialog<String> dialog = new Dialog<>();
            dialog.setTitle("Example Dialog");
            dialog.setHeaderText("This is an example dialog.");

            Label contentLabel = new Label("Dialog content");
            dialog.getDialogPane().setContent(new VBox(contentLabel));

            Button closeButton = new Button("Close");
            closeButton.setOnAction(closeEvent -> {
                dialog.close(); // 关闭对话框
            });
            dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);

            dialog.showAndWait(); // 显示对话框并阻塞当前线程
        });

        VBox root = new VBox(showDialogButton);
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上述示例代码中,点击"Show Dialog"按钮会弹出一个对话框,对话框中包含一个关闭按钮。当用户点击关闭按钮时,会调用dialog.close()方法关闭对话框,解除阻塞。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaFX里如何自定义Dialog

第一种很简单,就是以写一个JavaFX应用那样的”套路”新开一个窗口而已,所以,不做赘述,毕竟,写JavaFX首先就得先会写一个应用不是?...javafx.scene.control.Dialog是个范型类:Class Dialog 这个R代表Dialog返回结果的类型,也就是对话框关闭之后返回的结果类型,如果我们要把Dialog中各个组件的数据返回给调用程序使用...ButtonType,R>, 其实就是一个函数,接收ButtonType类型数据作为参数,然后返回R类型的数据作为结果,用函数来描述就是ButtonType => R, 绝大多数情况下(只要我们希望Dialog关闭后给调用者返回数据...以上是数据交换的逻辑,即对话框与调用者之间数据交换的逻辑,下面我们再来看UI逻辑。...; 除此之外,最后一个要定制的就是要显示什么按钮以及显示几个按钮,这是通过getDialogPane.getButtonTypes.addAll(ButtonType.OK, ButtonType.CANCEL

63020
  • JavaFX 11发行说明

    控制 JDK-8157690 [TabPane]排序选项卡使选项卡选择菜单为空 控制 JDK-8165459 HTMLEditor:意外禁用剪贴板工具栏按钮 控制 JDK-8185854 具有自定义外观的...控制 JDK-8193311 [Spin​​ner]在ENTER上未激活默认按钮 控制 JDK-8193495 快速删除和添加操作后,TabPane不会正确更新标题区域中的选项卡位置 控制 JDK-8194913...阻止显示ContextMenu 控制 JDK-8201285 重复使用具有disable = true的DateCell时,DateCell文本颜色未正确更新 控制 JDK-8208610 在FXMLLoader...JDK-8202357 ModuleHelper.java中版权标头中的额外字符 其他 JDK-8204653 修复FX API文档中的错误 其他 JDK-8204956 修复JDK-8200285后清理空白...JDK-8201291 单击具有setFocusable(false)的JFXPanel会导致其processMouseEvent方法永远循环 swing JDK-8088769 HtmlEditor中未显示透明色的

    6.7K60

    原创插件:WordPress博客友好对话框+文章随机推荐滚动条插件(附代码版)

    博客未正确加载 Jquery.js; ②. 博客重复加载了 Jquery.js 造成冲突。...cookies 记忆评论者信息功能,可在后台关闭; 其他未及时记录在案的 CSS 冲突修正。...①、新增网页嗨一下功能,首次启动请到插件设置界面填写歌曲 url 地址 ②、后台新增邮件订阅设置,可自定义滚动条右侧的博客订阅按钮地址 ③、后台新增留言地址设置,让对话框中显示留言板超链接 ④、修复可能从...2014.11.22:Ver 1.21 版本新增了后台设置功能: 插件激活后,点击[设置]按钮进入插件设置界面,插件默认设置如下: ?...id=587 四、附加说明 ①、该对话框在浏览器关闭之前只会弹出一次,避免了重复弹出带来的负面影响,但是从搜索引擎再次打开的页面一定会显示对话框。

    3.7K120

    java基础学习之 消息对话款

    str.matches(regex)) 27 show.append(str+""); 28 else 29 { 30 //弹出“警告”消息对话框...颜色对话框 创建一个颜色对话框  public static Color showDialog( Component component ,String title ,Color initialColor...) /* 创建一个有模式的颜色对话框,其中参数component 指定颜色对话框可见时的位置,颜色对话框在参数,component 指定的组件的正前方显示出来,如果component为null,颜色对话框在屏幕的正前方显示出来...title指定对话框的标题,initialColor指定颜色对话框返回的初始值。...用户通过颜色对话框选择颜色后,如果单击“确定”按钮,那么颜色对象,如果单击“撤销”按钮或者关闭图标,那么颜色对话框将消失,showDialog()方法返回null */ 1 package tes;

    70780

    解决session阻塞的问题

    现在我们有了测试表,表中有12条数据,打开另一个查询对话框在SSMS中(意味着重新创建了一个session) 3.在新的查询窗口中首先要开启事务,然后写一个插入语句 ?...但是没有end tran 来终止事务,因此事务状态为“open”,现在运行脚本来看一下当前看起的运行处于“open”状态的session。 ?    ...现在让我们创建另一个session,更新一条记录并且不提交,即让查询session的状态为“open”。因此在新的查询窗口中 写一个语句来执行如下: ?...这里会看到系统正在运行后没有完成语句的状态(因为上一个事务没有关闭导致表锁,这个不能插入),现在可以在另外的窗口查询一下阻塞的情况,如下检查阻塞的session。 ?...如上所示,阻塞的session ID是58,由于我们更新查询导致阻塞了54的执行,54就是我们插入数据未提交的批处理。 现在我们能搞清楚阻塞的原因,也就可以从容解决阻塞了。

    65850

    你还在用B端大模型?OUT 了!!!用混元打造专属智能化桌面应用

    本篇文章将详细讨论如何将 JavaFX 与混元大模型结合起来,构建一个智能化的桌面应用,用户可以通过该应用实时与混元大模型进行交互,实现类似智能对话的功能。...架构设计 为了实现一个智能化的桌面应用,我们可以采用以下架构: 前端:JavaFX JavaFX 提供用户界面,允许用户输入文本消息,并展示与混元大模型的对话内容。...为了将这一响应显示到 JavaFX 界面中,需要将返回的文本解析并格式化为消息气泡。 在桌面应用程序中,保持用户界面的流畅性是至关重要的。当调用混元大模型时,可能会遇到网络延迟或响应时间较长的问题。...因此,必须使用异步处理来避免阻塞主线程。 下面,我们通过创建一个新的线程来执行与大模型的通信操作。然后使用 Platform.runLater() 方法在网络请求完成后更新 UI 界面。...检查输出 构建完成后,检查指定的输出目录,你应该能看到生成的 exe 文件。 运行效果 最后,我们来看一下运行结果吧,现在谁有能说Java已死,大模型才是未来呢。

    44731

    Qt5实战第四篇:Qt5的对话框与窗口

    对话框(Dialog)对话框是一种特殊的窗口,通常用于请求用户输入信息或确认某个操作。...你可以通过继承QDialog来创建自定义对话框。QMessageBox:用于显示简单的消息框,如信息、警告、错误和询问等。QFileDialog:用于打开或保存文件的标准对话框。...::critical(nullptr, "Critical", "This is a critical error message."); // 显示一个询问消息框,并获取用户的选择 int...模态性:对话框可以是模态的(阻塞其他窗口的交互)或非模态的(允许同时与其他窗口交互);而窗口通常是非模态的。...关闭行为:对话框在关闭时通常会返回一个结果(如QDialog::Accepted或QDialog::Rejected);而窗口的关闭通常只是简单地隐藏窗口或退出应用程序。

    20010

    解决session阻塞的问题

    现在我们有了测试表,表中有12条数据,打开另一个查询对话框在SSMS中(意味着重新创建了一个session) 3.在新的查询窗口中首先要开启事务,然后写一个插入语句 ?...但是没有end tran 来终止事务,因此事务状态为“open”,现在运行脚本来看一下当前看起的运行处于“open”状态的session。 ?...现在让我们创建另一个session,更新一条记录并且不提交,即让查询session的状态为“open”。因此在新的查询窗口中 写一个语句来执行如下: ?...这里会看到系统正在运行后没有完成语句的状态(因为上一个事务没有关闭导致表锁,这个不能插入),现在可以在另外的窗口查询一下阻塞的情况,如下检查阻塞的session。 ?...如上所示,阻塞的session ID是58,由于我们更新查询导致阻塞了54的执行,54就是我们插入数据未提交的批处理。 现在我们能搞清楚阻塞的原因,也就可以从容解决阻塞了。

    1.3K60

    Material Design — 提示框( Dialogs)

    关闭提示框 提示框可以通过点击提示框外部或点击系统后退按钮(在Android上)来关闭。 有时候,用户必须做出选择动作后才能关闭提示框。...例如,他们可以显示头像,图标,提示语或正交行为(例如添加帐户)。 操作机制: ·立即选择一个选项,提交选项并关闭菜单; ·触摸提示框外部或按下后退键,取消操作并关闭对话框。...不该有明确的取消按钮 明确说明 ·在简单提示框中,行高可以变化; ·简单的对话框在屏幕上垂直和水平都居中显示; ·提示框与屏幕左右边缘的距离应该至少为40dp,距离顶部和底部至少为24dp; ·该对话框的内容距离提示框边缘为...用法 全屏幕提示框在一系列任务(例如创建日历入口)被提交或取消之前分组,并在点击“保存”后保存选择。 触摸“X”会放弃所有更改并退出提示框。...全屏对话框可实现复杂的布局,将多个材料堆积的情况简化(提示框上层的提示框),并暂时将app可感知的海拔重置为更高。 全屏对话框允许任务在复杂操作时开启简单菜单或简单提示框。

    5.2K101

    如何使用MapTool构建交互式地牢RPG 【Gaming】

    通过使用同一对话框从文件系统中选择文件,可以导入计算机上已有的资源。 MapTool资源显示在“库”面板中。如果MapTool窗口没有“库”面板,请在“窗口”菜单中选择“库”以添加一个。...如果地图没有栅格,并且希望栅格在调整后保持可见,请转到“视图”菜单并选择“显示栅格”。...在出现的“新建标记”对话框中,为标记命名并将其设置为NPC或PC,然后单击“确定”按钮。 一旦一个标记在地图上,试着移动它,看看它的移动是如何被控制到你指定的网格上的。...可以以矩形块、椭圆、多边形、菱形和徒手画形状显示地图的各个部分。选定形状后,在地图上单击并释放,拖动它以定义要显示的区域,然后再次单击。...单击“确定”按钮关闭窗口。 现在右键单击标记并选择“编辑”。在编辑标记窗口中,选择Statetab 并输入标记最大HP的值(从玩家的字符表)。 若要创建新宏,请在“窗口”菜单中显示“活动”面板。

    4.4K60

    MyChat,一个私有的“微信“

    UI 采用的 JavaFx ,了解过 JavaFx 的人都知道这东西在国内的文档表现,为使得页面开发便捷,专门为其开发了一些轮子,比如 FxmlObject ,让你可以轻松的来操作 fxml 文件对象。...也就是说,你可以使用任何开发方案,不过要考虑集成问题,因为 JavaFx 可以直接调用 java 程序,所以我这没有集成问题。...后端可以自己部署(开源以后),也可以使用 mychat 云(暂未开放)。 应用部分截图 ? ? ? ? ? ? ? ?...UI 问题 stage 选择无边框模式后, 页面的拖拽. 缩放问题; listview 空数据鼠标悬停背景色问题; 节点边距问题; listview 鼠标点击,但不选中....朋友页面使用 listview 实现, 标题也为 listcell 但可点击,不可选中; sketch 文本过长,显示问题; 页面关闭问题, 关闭后断开连接并结束进程; 如何让某个页面置顶, 不可失去焦点

    3K10

    简单了解产品设计中如何使用移动弹窗?

    非模态弹窗的出现通常都有时间限制,出现一段时间后就会自动消失。如短信验证码发送成功提醒等。...考虑到提示框在页面的显示时间只有较短几秒并且占用区域小,容易被用户忽略,所以不适合承载重要信息和提示。...在使用对话框时,功能按钮最好只有两个,让用户选择“确认”或“取消”的功能操作。“确认”指对弹窗内容描述的确认操作,比如确认删除、确认付费,“取消”一般指取消操作,然后关闭弹窗。...一旦选择使用弹窗,一般情况下都把弹窗的层级控制在一级,而不是关闭了一个弹窗后马上出现新的弹窗或者点击功能选择又弹出一个弹窗。接连不断地出现弹窗会增加用户想要卸载App的欲望。...使用弹窗的参考方案: 仅在必要时使用弹出窗口,弹窗尽量控制在一级; 弹窗简单清晰,并明确价值; 用户体验良好,不打扰用户; 营销弹窗需要正确时间弹出,并给予用户一定的奖励; 根据不同的场景使用不同的弹窗样式

    1.7K40

    Java 实现一个带提醒的定时器

    ---- 涉及技术:   使用类似Timer的定时器来推迟提醒线程的执行便可完成程序的主体部分,再辅以JavaFX、AWT来构建GUI界面即可。   ...---- 当前涉及的问题:   点击开始计时后,无法停止计时(无法获取到线程池中的线程并终止它);   线程池的进程不会因为JavaFX程序的关闭而结束,两者这件没有相互约束的关系; ---- 源代码...倒计时时长:"+ valueList.get(2) +"H "+valueList.get(1)+"M "+valueList.get(0)+"S"); //03.创建一个对话框提醒线程...停止计时--->调用Timer的Cancel()函数,即可关闭整个Timer(也会结束这个Timer线程),此时再重新实例化一个Timer即可。...System.out.println("倒计时时长:"+ int_hour +"H "+int_miunte+"M "+int_second+"S"); //03.创建一个对话框提醒线程

    1.8K10

    C#之二十 Win Form对话框

    单击“打开字体对话框”按钮显示字体对话框,在给对话框设置后将字体应用到文本框上,使文本框的字体和字体对话框设置的字体一致。...打开字体对话框”按钮后,如下图: 设置字体为“宋体”,字形“粗斜体”,颜色“深红色”,大小“小五”,点击确定。...单击“打开颜色对话框”按钮显示颜色对话框,在给对话框设置后将颜色应用到文本框上,使文本框的颜色和颜色对话框设置的颜色一致。...​​Multiselect​​ 获取或设置一个值,该值指示对话框是否允许选择多个文件 ​​RestoreDirectory​​ 获取或设置一个值,该值指示对话框在关闭前是否还原当前目录 ​​Title​​...,另存为对话框是否显示警告 ​​RestoreDirectory​​ 获取或设置一个值,该值指示对话框在关闭前是否还原当前目录 ​​Title​​ 获取或设置对话框标题 SaveFileDialog对话框常用方法

    6000

    【Win32】初识Win32编程

    对话框原理 对话框的分类 模式对话框-当前对话框显示时,会禁止本进程其它窗口和用户交互操作。 无模式对话框-在对话框显示后,本进程其它窗口仍然可以和用户进行操作。...[in, optional] hWndParent,//对话框父窗口 [in, optional] lpDialogFunc//自定义函数 ); DialogBox是一个阻塞函数,只有当对话框关闭后...对话框的关闭 BOOL EndDialog( [in] HWND hDlg,//关闭的对话框窗口 [in] INT_PTR nResult//关闭的返回值,能指定返回值就说明能接触阻塞 )...对话框的消息 WM_INITDIALOG-对话框创建之后在显示之前,通知对话框窗口处理函数,可以完成自己的初始化相关的操作。 ---- EndDialog销毁对话框,并且解除阻塞。...而DestroyWindow只能销毁对话框,并不能解除阻塞。

    2.1K110

    Qt 学习记录

    模态对话框,会阻塞同一应用程序中其它窗口的输入。非模态对话框,不会阻塞同一应用程序中其它窗口的输入。 模态对话框很常见,比如“打开文件”功能。...你可以尝试一下记事本的打开文件,当打开文件对话框出现时,我们是不能对除此对话框之外的窗口部分进行操作的。非模态对话框,例如查找对话框,我们可以在显示着查找对话框的同时,继续对记事本的内容进行编辑。...>setAttribute(Qt::WA_DeleteOnClose); // 55号属性 对话框关闭时,自动销毁对话框。...这些对话框在所有程序中几乎相同,因此没有必要在每一个程序中都自己实现这么一个对话框。...: 允许用户输入一个值,并将其值返回; QMessageBox: 模态对话框,用于显示信息、询问问题等; QPageSetupDialog: 为打印机提供纸张相关的选项; QPrintDialog

    7.2K50
    领券