【发布时间】: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