当前位置: 首页 > 知识库问答 >
问题:

Google Guava Eventbus和Swing Modal对话框

太叔京
2023-03-14

我正在探索在Swing应用程序中使用Guava EventBus,到目前为止一切都很好,只有一个与模态对话框有关的例外。

当我的应用程序显示一个模态JDialog(让我们称它为dialog1)并且事件由该对话框发布时,一切都很好,这意味着这些事件会立即被模态对话框内外的订阅者接收。

但是,如果我的应用程序显示了一个不同的模式JDialog(让我们称它为dialog2),并且如果这个dialog2创建了前面提到的dialog1并以模式显示它,则dialog1发布的事件会排队,直到dialog1关闭,这样订阅者就不会立即收到它们。

我不明白为什么它在第一种情况下效果很好,但在第二种情况下效果不好。

如果在这两种情况下都不起作用,我认为这可能是由于模态阻塞了模态对话框之外的其他内容。但由于第一种情况很好,所以我很困惑。

任何提示将非常感谢!

干杯,克里斯蒂安

共有1个答案

华良平
2023-03-14

听起来你是说你打开一个模态对话框(dialog1)来响应一个事件,然后在该对话框上的操作将更多事件发布到同一个EventBus?在这种情况下,这是一个问题,即EventBus在处理另一个事件时如何处理发布在同一线程上的事件:它将它们排队,直到第一个事件的处理完成,以确保严格按照发布的顺序处理事件。它使用的模型通常假设您的事件处理代码不会无限期地占用线程。

 类似资料:
  • 问题内容: 我正在寻找适用于asp.net的JavaScript模态对话框解决方案,jquery UI对话框似乎不错,但是它将对话框容器移至body标签的底部。我将对话框代码更改为将对话框保持为asp.net形式,但仍然超出了updatepanel的范围。 有没有解决方案或更兼容的对话框,它不会破坏asp.net表单的生命周期? 谢谢 问题答案: 为什么不将UpdatePanel放在对话框容器中?

  • PPMessage官网部署了PPCom,网站用户可以通过PPCom和PPMessage的客服人员对话。 体验PPMessage的客服服务 打开 PPMessage官网,将鼠标移至右下角的悬浮图标(PPCom)上, PPCom 会弹出”开始聊天”的提示。 点击 PPCom, PPCom 会打开聊天窗口,在窗口下方的输入栏里输入文字,点击Enter(回车键)即可发送消息。 现在你应该可以收到客服的回复

  • 对话框的内容不是在页面最初可见,而是在用户操作时显示额外的信息。 Toasts Materialize 提供了非常简单的方法,来弹出一些信息,同时也不会让用户感到突兀。这些 Toasts 显示的位置和大小会随着你的设备的不同而改变。 在 JavaScript 中调用 Materialize.toast() 方法来使用。 // Materialize.toast(message, displayLe

  • 对话框是一个现代GUI应用不可或缺的一部分。对话是两个人之间的交流,对话框就是人与电脑之间的对话。对话框用来输入数据,修改数据,修改应用设置等等。 输入文字 QInputDialog提供了一个简单方便的对话框,可以输入字符串,数字或列表。 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In this

  • 打开或保存文件,弹出警告等对话框 进程: 主进程​ 选择多个文件和目录的对话框: 1 const {dialog} = require('electron') 2 console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) Copied! 对话框默认是在主线程中

  • 显示用于打开和保存文件、警报等的本机系统对话框。 线程:主线程 显示用于选择多个文件和目录的对话框的示例: const { dialog } = require('electron') console.log(dialog.showOpenDialog({ properties: ['openFile', 'openDirectory', 'multiSelections'] })) 这个对话框是

  • 如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将启动一个对话框。 对话框的一般形式是包含多种子窗口控件的弹出式窗口,这些控件的大小和位置在程序资源描述文件的「对话框模板」中指定。虽然程序写作者能够「手工」定义对话框模板,但是现在通常是在Visual C++ Developer Studio 中以交谈式操作的

  • showToast(Object object) 展示 toast 组件,默认 2000 毫秒之后消失 手Q版本:7.8.0 参数 Object object 参数 类型 名称 备注 title string 提示的内容 duration number 延迟时间 2000 ms complete function 接口调用结束的回调函数 选填 示例 BK.UI.showToast({ ti