java - Google Guava Eventbus 和 Swing 模态对话框

标签 java swing events modal-dialog guava

我正在探索 Guava EventBus 在 Swing 应用程序中的使用,到目前为止一切正常,只有一个与模态对话框相关的异常(exception)。

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

但是如果我的应用程序显示不同的模态 JDialog(我们称它为 dialog2),并且如果此 dialog2 创建上述 dialog1 并以模态方式显示它,则 dialog1 发布的事件将排队等待 dialog1 关闭,以便订阅者执行不会立即收到它们。

我不明白为什么它在第一种情况下工作正常,但在第二种情况下却不行。

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

如有任何提示,我们将不胜感激!

干杯, 基督徒

最佳答案

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

关于java - Google Guava Eventbus 和 Swing 模态对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315689/

相关文章:

java - 从弹出菜单中捕获鼠标 XY 位置

c# - 在 WPF 按钮单击事件上使用 lambda 表达式时出现奇怪的行为

python - Tkinter 应用程序中的日期更改通知 (win32)

java - 将 char 反向复制到 char 数组

java - 是什么导致我的代码卡住?我没主意了

java - 如何响应式下载和处理大数据?

javascript - html 选择上的 MouseUp() 事件不起作用

java - python客户端和java服务器之间的通信

java - 关于在 Java 中将 JLabels 添加到矩形的建议

java - JEdi​​torPane、JScrollPane 和辅助功能