【问题标题】:What is a View in Java Swing MVC? [duplicate]Java Swing MVC 中的视图是什么? [复制]
【发布时间】:2020-08-26 08:40:47
【问题描述】:

信不信由你,这个问题还没有人问过。

在 Java Swing MVC 中什么可以被视为视图? JTextField 之类的 GUI 组件是视图吗? (它实际上是一个视图控制器,对吧?)。视图可以是其他视图的组合(复合视图)吗?

请注意,我不是在问多个问题,而是在一个问题的保护伞下,“Java Swing MVC 中的视图是什么?”

【问题讨论】:

  • 我认为 Swing 中的视图将是 JPanel 或类似的视图,其中放置了 JTextField 等多个组件。
  • 您面临的一个问题是 MVC 在其各个概念之间定义了不同且独立的边界,而在很多情况下,它没有。我的意思是,视图实际上可以充当子视图的控制器。所以在JTextField 的情况下,它实际上是一个自包含的 MVC——它有一个视图,它有模型,它有控制器(以 UI 委托的形式)——MVC 更多的是一个促进“关注点分离”的概念"和代码解耦。 “一个视图可以是其他视图的组合(复合视图)吗?”,是的,正如我已经说过的
  • 另外请记住,MVC 不是一种范式,它是一个用于解决当时特定问题的概念,旨在提供一种降低复杂性和定义责任范围的方法——例如,模型应该是视图不可知的,而不是规定它应该如何显示,这样视图就可以灵活地根据使用的上下文以它需要的任何方式显示数据
  • @MadProgrammer 我认为 JTextField 的模型实际上是一个单独的类,即 Document
  • @VGR 是的,你是对的,确实如此,但控制器通常具有对模型和视图的引用——而且,UI 委托是一个单独的类——我只想说它是一个MVC 可以自包含的概念的“示例” - 很多人尝试然后将这些组件强制为严格的 MVC 并在它不起作用时抱怨 - 但 MVC 的教学方式实际上是错误的 - Swing 是一个很好的如何合理地应用 MVC 概念的示例(并非没有问题;))

标签: java swing model-view-controller view


【解决方案1】:

根据 MVC 架构视图的通常定义,它是能够在视觉级别上与用户交互的任何东西。 medium.com 的引述如下:

控制器的仆从,控制器用来完成其工作的通用可重用接口对象。最终,模型如何在屏幕上显示。视图中的大部分对象(按钮、滑块、文本)

因此,从本质上讲,任何具有 Visibility 属性的 Swing 库部分都被视为 视图。您提到了 JTextField 的 VM,但它实际上是此架构中控制器和视图之间的基本关系,其中您有一个空视图,您可以通过从控制器向其“抛出”数据来填充并呈现给用户。

至于复合视图,我想说这取决于您如何看待它。它本质上是不同视图的混合,可能会或可能不会呈现一个逻辑组。但从技术上讲,我不会真正将这两个归为同一类别。

【讨论】:

    猜你喜欢
    • 2016-03-28
    • 2011-08-15
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2015-02-05
    • 2011-09-03
    相关资源
    最近更新 更多