我应该把这些字段放在MVC模型中?

时间:2013-05-16 03:48:01

标签: java swing model-view-controller jpanel paintcomponent

假设我有三个课程:JPSModelJPSView extends JPanelJPSControllerJPSView会覆盖paintComponent(),它会在位置zoomFactor的某个(renderPositionX, renderPositionY)处绘制图片。

用户可以更改的zoomFactorrenderPositionXrenderPositionYJPSView还是JPSModel?如zoomFactor计算renderPositionXrenderPositionYsetZoomFit()的方法呢?

1 个答案:

答案 0 :(得分:2)

它们都应该在JPSView,因为它们与“什么”(数据)无关;它们都与数据的“where”(位置)和“how”(以什么缩放因子)相关。

请记住Model已保留,除非是ViewModel,否则您永远不会保存视图信息。举个例子,大多数PDF阅读器都提供了一个选项,可以在完全相同的页面(以及相同的缩放系数)上重新打开PDF文件,就像上次关闭它一样。但是,这并不意味着它会在PDF本身中保存页码和缩放因子。

为了迎合这种情况,如果您希望保留“上次查看”相关视图信息,则应创建一个单独的JPSViewModel,您应该理想地在应用程序本地数据库中保留,而不是与它正在处理的文件一起保留。