在Java中将警告从后端代码传递到Swing UI的正确方法是什么?

时间:2015-07-28 15:03:26

标签: java swing

我有一个项目,我正在构建一个Swing UI。当加载文件等时,UI的某些部分可能会调用后端类中的某些方法。获取用于填充UI字段的数据(到目前为止我还没有实现任何这些,因此"大概是#34;)。如果文件无效,这些方法可以抛出异常,并且UI可以捕获这些异常并使用其中包含的信息来显示信息性错误对话。到目前为止,非常好。

但我发现文件在技术上无效的方式,但我仍然能够在后端使用变通方法加载它们。我想警告用户这种情况,但仍然使用变通方法加载文件,因为它是出现在许多真实文件中的一个相对常见的错误。那么是否有一种公认的良好实践方法可以将警告的细节从后端传递到前端以及数据?回调(以lambda表达式的形式)是一个合理的解决方案,或者可能传入一个带有要修改的字段的类?还是应该退回一对?这些方式都没有让我觉得特别" Java-y",我想知道是否已经有一个可接受的模式。

1 个答案:

答案 0 :(得分:2)

通常的方法是从后端触发事件,并在GUI端收听它们。通过这种方式,后端可以通知任何对其更改,警告,异常感兴趣的人 - 所有这些都根本不知道任何GUI。 Swing GUI和Web前端可以同时轻松地使用相同的后端,一切都可以很好地工作。

最基本的实现需要Observer pattern,这是每个GUI应用程序的核心。

但实际上,更好的解决方案是使用事件总线。事件总线是the Mediator pattern实现和上面提到的Observer的交叉,因为它同时执行。您发射一个事件,调解员捕获它,并将其重播给之前已向其注册的任何人。有关更多信息,请查看下面链接的页面,因为其中一些页面提供了有关如何使用事件总线是一件好事的更多详细信息。

那里有几个实现,例如Guava EventBuswiki pages),Square Ottopages),Greenrobot EventBuspages),MBassador或{{3} }(Vert.x EventBus)。