基本上,将GUI模型与核心Java代码解耦最好使用数据绑定库。也就是说,您有POJO业务代码,有GUI组件代码,而且您不想在更新视图和实现业务逻辑时一直编写大量逻辑来同步它们。所以不要这样做。找到一个成熟的GUI小部件数据绑定框架并学习它;让它保持屏幕控件与您的POJO代码同步。 JGoodies和beanbindings是绑定到OO模型的Swing变体的良好示例。JGoodies的核心部分是开放源代码的。如果您转到jgoodies网站上的/articles,则有有关模式和数据绑定的文章。虽然每个绑定框架都有不同的类,但编写良好干净的代码的模式在GUI框架和绑定框架之间是可移植的。如果您下载现在开放源代码的WindowsBuilderPro工具,则其中包含Swing和SWT执行良好数据绑定的优秀示例。swing jphonebook示例使用beanbindings库。WindowsBuilderPro是一个拖放GUI构建器;您过去必须付费才能获得它,作为一个与主要免费GUI库一起使用的领先拖放GUI构建器。它被谷歌收购并开源,以便他们可以增强其用于GWT(Google Web GUI框架)的图形屏幕构建支持。该GUI构建器工具既有优秀的示例代码,也是一个优秀的开源工具。它在Swing和SWT GUI库中都使用了电话簿的相同示例,以演示其拖放GUI构建器工具的功能。因此,这是一种学习数据绑定时比较和对比Swing和SWT的好方法。
我强烈建议您尝试ZK框架。直到今天,我都没有找到过如此强大的框架。在我的公司,我们使用最新的模式(如MVVM)在几周内应用了新项目。编程风格非常像开发传统的“桌面”应用程序。 PS:我与ZK人员无任何关系,我只是使用他们的框架。
从你对Swing是一个桌面应用程序的MVC框架的建议的反应中,我认为你真正需要一些生成器框架,可以从更高级别的规范生成“模型”和“视图”代码。我比较熟悉的示例包括Eclipse EMF、GEF和相关技术。