假设我有三个类:JPSModelJPSView extends JPanelJPSControllerJPSView覆盖paintComponent(),后者在位置zoomFactor的特定(renderPositionX, renderPositionY)处绘制图像。

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

最佳答案

它们都应该在JPSView中,因为它们与要显示的“什么”(数据)无关。它们都与要显示数据的“位置”(位置)和“方式”(缩放比例)有关。

请记住,Model是持久的,除非它是ViewModel,否则您绝不会将视图信息与之一起保存。举一个例子,大多数PDF阅读器为您提供了一个选项,可以在与上次关闭时完全相同的页面(以及相同的缩放倍数)处重新打开PDF文件。但是,这并不意味着它将页数和缩放系数保存在PDF本身中。

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

09-10 00:42