代码之家  ›  专栏  ›  技术社区  ›  Cratylus

javaswing与mvc:这种模式真的可能吗?

  •  10
  • Cratylus  · 技术社区  · 14 年前

    我是swing的新手,但我成功地创建了一个gui。
    但我的问题是,我无法应用参考/教程中建议的模式,主要是MVC模式。


    例如,我使用了一个Swingworker,但是我不能在设计中“安装”一个控制器。

    也就是说,控件的动作本质上是在doBackground方法中,例如按钮的动作。
    所以没有控制器类。

    我看了很多教程,但是所有介绍MVC的都有一个很小的例子,在大多数情况下视图(只是一些标签而已!)更新了一切。我完全搞不懂,或者在使用swingworkers和jtrees的swing应用程序中集成MVC模式是不可能的,或者至少是不容易的?

    谢谢

    4 回复  |  直到 14 年前
        1
  •  7
  •   aperkins    14 年前

    当我构建了更大的应用程序(人-年的开发)时,我们经常将MVC架构抽象到单个组件之上的顶级控制器/模型和视图中,并接受单个组件将是他们自己的个性化MVC。GeoffreyZheng的评估是绝对正确的,这是我非常喜欢在Swing环境中开发的东西。也就是说,如果您想要真正的MVC,您可能需要从单个组件抽象出来,用更抽象的术语来讨论视图。

        2
  •  5
  •   Geoffrey Zheng    14 年前

    openly admits it

    (传统的MVC分离)没有 的视图和控制器部分 部件需要紧耦合 (例如,很难 编写一个没有 了解视图的详细信息)。所以我们 将这两个实体折叠成一个 单个UI(用户界面)对象。

    对于JTree,您可以将TreeModel作为模型。像JLabel这样的简单组件甚至没有模型。

    正如链接进一步解释的那样,您确实可以与LAF提供的UI类进行一定程度的分离。但是Swing组件本身必须维护和控制许多与UI相关的属性。

        3
  •  4
  •   crusam    14 年前

    也许看看MVC和MVP之间的区别(我更喜欢)更容易理解: MVC or MVP