Swing GUI与域逻辑通信的最佳方式?

时间:2008-09-16 06:55:28

标签: java user-interface swing

我在一些POJO中实现了一些域逻辑。我想编写一个Swing用户界面,以允许用户启动并查看各种域操作的结果。

UI和域之间通信的最佳模式/框架/库是什么?这归结为:

  • 用户界面能够将用户手势转换为域名操作
  • 该域能够将状态/结果信息发送回UI以供显示

我知道MVC是一个广泛的概念,并且已经摆弄了Observer模式(如果我理解正确,它的Java实现有一些缺点),但我想知道这个问题是否有一个公认的最佳实践?

3 个答案:

答案 0 :(得分:2)

绝对是MVC - 像example这样的东西可以清楚地分解出来。 Swing示例的问题在于它们似乎显示MVC都在摇摆的东西中工作,这对我来说似乎不对

答案 1 :(得分:1)

MVC 对于单个窗口小部件来说非常棒,但是当pagesforms包含大量小部件时,它会变得有点不守规矩。

可能值得关注的一件事(我不赞同它,我实际上没有使用它,只为我自己实现了非常相似的东西)是Beans Binding Framework (JSR295

答案 2 :(得分:0)

我过去曾使用Observer模式(使用AspectJ魔术)某些成功,但发现除非你小心它很快就变成了一个集群..呃......轻弹?

很快就变得很难管理,最重要的是很难调试。

修改

为了略微扩展我的回答,我们使用的是SWT,而不是Swing,所以YMMV。我们基本上使用AspectJ来连接从UI组件到模型对象的数据传输。这些模型对象是愚蠢的POJO。

实际业务逻辑是通过使用AspectJ“观察”模型对象并在更改时触发所需事件来完成的。因此,如果您更改了文本框中的值,AspectJ将触发并将该值复制到POJO中。如果POJO中的该字段在其上有一个事件,那么然后就会触发业务逻辑。如果该逻辑修改了任何POJO(并且它可以),AspectJ会注意到并将POJO中的值复制到UI组件中。