我正在编写一个我想使用 Swing 和 SWT 的 GUI 应用程序。最终用户将以某种方式指定应该使用哪个(它不会同时使用两者!)。SWT 是我普遍喜欢的东西,我一直在研究 JFace,但似乎如果我使用它最强大的功能,我会增加 GUI 和模型之间的耦合,并使抽象 GUI 变得更加困难,因此 Swing 可以也用过。
是这样吗?可以在不将 GUI 细节绑定到模型中的情况下使用 JFace,反之亦然吗?
我正在编写一个我想使用 Swing 和 SWT 的 GUI 应用程序。最终用户将以某种方式指定应该使用哪个(它不会同时使用两者!)。SWT 是我普遍喜欢的东西,我一直在研究 JFace,但似乎如果我使用它最强大的功能,我会增加 GUI 和模型之间的耦合,并使抽象 GUI 变得更加困难,因此 Swing 可以也用过。
是这样吗?可以在不将 GUI 细节绑定到模型中的情况下使用 JFace,反之亦然吗?
据我所知,使用 JFace 查看器可以很好地分离视图和模型。
这里唯一的紧密耦合是实际查看器实现的选择(例如,使用 TableViewer 与 TreeViewer 分别将您的模型绑定到 Table 或 Tree 小部件)。
至于问题的第一部分,表明您出于某种原因希望将您的应用程序与选择的 GUI 框架分离,我建议您看一下UFace 项目
UFace 项目旨在提供您似乎想要的目标——一个可以针对许多 GUI 后端运行的单一 UI 实现(它调用Providers):
在撰写本文时,UFace 项目页面列出了对以下提供程序的支持:
(我也听说过一些关于支持 Qt Jambi 提供程序的工作的传闻)
你不能动态切换。JFace 调用 SWT。不能要求它改为调用 AWT。
至于 JFace 是否将模型与 GUI 耦合,嗯,没有。它有一组模型接口,但您可以将任何您喜欢的模型粘贴到它们上。如果您的客户希望有朝一日可以选择淘汰 JFace,则由您自行决定。