首页
学习
活动
专区
工具
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对话框的更多详细信息和用法,可以参考腾讯云的相关文档和示例代码:

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

相关·内容

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

45620

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.6K60

原创插件: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 指定的组件的正前方显示出来,如果componentnull,颜色对话框在屏幕的正前方显示出来...title指定对话框的标题,initialColor指定颜色对话框返回的初始值。...用户通过颜色对话框选择颜色,如果单击“确定”按钮,那么颜色对象,如果单击“撤销”按钮或者关闭图标,那么颜色对话框将消失,showDialog()方法返回null */ 1 package tes;

67280

解决session阻塞的问题

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

62850

解决session阻塞的问题

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

1.2K60

Material Design — 提示框( Dialogs)

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

5.1K101

如何使用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 文本过长,显示问题; 页面关闭问题, 关闭断开连接并结束进程; 如何让某个页面置顶, 不可失去焦点

2.9K10

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

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

1.6K40

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

【Win32】初识Win32编程

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

2K110

SHFileOperation函数使用的介绍

fFlags成员标志间的关系 标志 抑制的对话框 相关性与优先级 FOF_MULTIDESTFILES 无 无 FOF_FILESONLY 无 无 FOF_SILENT 如果设置,进度对话框不显示。...FOF_SIMPLEPROGRESS 无 FOF_SILENT标志所抑制。...FOF_NOCONFIRMATION 如果设置,确认对话框在任何情况下都不出现。 名字冲突时,引起文件覆盖,除非设置了FOF_RENAMEONCOLLISION标志。...FOF_NOCONFIRMMKDIR 抑制请求建立新文件夹的对话框 缺省目录作为严重错误产生一个错误消息框。 建立目录的确认对话框作为错误消息框是否显示依赖于FOF_NOERRORUI的设置。...相关的标志是: 标志 值 描述 FOF_SILENT 0×0004 这个操作不回馈给用户,就是说,不显示进度对话框。相关的消息框仍然显示

70610

Qt 学习记录

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

7.1K50

Android 关机对话框概率没有阴影故障分析

showDialog,看名字也知道它是显示对话框了,于是我们仔细瞧瞧。 这里我们要注意的是setTitle就是我们看到的在试图工具中显示的名字。...PhoneWindowManager.java 需要看,因为系统核心处理位置,看了下是启动显示对话框的,肯定无关。...(我们去测试,调试以及打印log,发现此处会出现 mState有时短信对话框在前,有时系统关机在前,如果谁在前面,按照这里逻辑,从后向前计算,会出现前面的将后面的覆盖掉,最终系统判断前面的需要阴影。)...而错误的时候,恰恰是短信在前,覆盖了系统关机对话框的提示阴影,使得界面显示上,虽然系统对话框在前,但是阴影却放在了短信的后面,导致问题产生 看到这里的差异,我们继续看下mState,看下为什么引起这个的呢...此问题最终只给出方案,做实质修改 此问题修改建议: 1 关机对话框不要使用FLAG_DIM_BEHIND,自定义的时候指定一个全屏view来实现。

1K60

python测试开发django-128.jQuery消息提示插件toastr使用

前言 toastr.js是一个基于jQuery的非阻塞、简单、漂亮的消息提示插件,使用简单、方便。可以通过设置参数来设置提示窗口显示的位置、显示的动画等。...错误(error) 提示(info) 警告(warning) toastr环境准备 toastr.js官方文档以及源码 https://codeseven.github.io/toastr/ 解压,...; //错误消息提示,默认背景浅红色 实现效果,默认在屏幕右上角显示 可以通过toastr.info()方式调用,也可以用toastr‘info’方式调用 toastr['info']...showMethod: "fadeIn", hideMethod: "fadeOut" }; 参数说明: closeButton:false,是否显示关闭按钮...(提示框右上角关闭按钮); debug:false,是否调试; progressBar:false,是否显示进度条(设置关闭的超时时间进度条); positionClass,消息框在页面显示的位置 toast-top-left

1.4K10
领券