Google Guava Eventbus和Swing Modal对话

时间:2014-04-26 19:43:06

标签: java swing events modal-dialog guava

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

当我的应用程序显示模态JDialog(让它调用它对话框1)并且此对话框发布事件时,一切都很好,这意味着这些事件会立即被模式对话框内外的订阅者接收。 / p>

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

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

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

任何提示都会非常感激!

干杯, 基督教

1 个答案:

答案 0 :(得分:1)

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