繁体   English   中英

使用Java中的Swing / Graphics设计和显示数组的MVC

[英]MVC-design and displaying arrays using Swing/Graphics in Java

我正在开发一个小型的国际象棋游戏,并认为基本模型已经差不多完成,可以开始编写GUI了。

我一直想知道的是,如果国际象棋棋盘由[8] [8]的Square数组表示,并且我创建了一种绘制正方形的方法,并且以某种方式在该方法和Square之间建立了关系模型,然后我会神奇地拥有一个可视的国际象棋棋盘吗?

我的意思是说一个正方形是10x10像素,是否意味着第一个元素(以正方形表示)将从(0,0)开始,元素2从(10,0)开始,元素/正方形九在(0, 10)等等? 当我检出Graphics2D时,我注意到绘制矩形的方法需要x和y坐标,如果我希望位置取决于数组元素怎么办?

还是我必须在板上写下每个正方形的坐标?

困扰我的另一件事是[row] [column]还是[column] [row]? 我一直在代码中使用[column] [row],因为如果您将其视为(x,y),这似乎是正确的。 上下移动时,更改行,= y,依此类推。

我一直在尝试搜索Google,以了解如何应用MVC设计,要考虑的事情,不要做的事情等等。到目前为止,我唯一知道的就是模型=数据逻辑,视图= gui和控件=交互作用,得出的结论是,要么我不擅长谷歌搜索,要么没有针对MVC的针对初学者的任何好信息。

主要是我不太了解M,V和C之间的关系。

Ri8亲爱的...实际上,..我们无法清楚地看到MVC架构在小型应用程序中的优势意味着基于窗口的小型应用程序...但是当您使用大型企业级应用程序时..您会意识到..

在开发大型企业级分布式系统时,有许多开发人员,设计师和其他人员正在使用它。 现在,假设开发人员在他们的编码部分进行设计..因此这是任何设计师都很难理解的..所以这部分是分开的,因此设计者可以很容易地对其进行修改和理解,并且不需要程序员的帮助及其VIEW组件。

就像将某些业务逻辑与View组件结合在一起一样,程序员很难理解,并且将逻辑与VIEW组件分开需要花费太多时间,因此任何程序员都可以轻松,快速地理解该逻辑..因此,Logic意味着模型和设计意味着任何GUI部件都意味着VIEW组件是分离的...

现在控制器..成分..所以,控制器组件提供这两个模型和视图组件之间的桥梁..梅南它决定哪个视图可提供给最终用户..它CONTROLL与模型部件的帮助下查看.... ......

得到它了........!!!!...

如果有任何建议...最好...................

因此,让我们解决一个简单的问题:就2D数组而言,实际上取决于您是决定[row] [column]还是[column] [row]。 Java不在乎。 只要你一直把它在你的应用程序,你可以把它无论怎样最有意义给您。 如果有帮助(可能没有帮助),请记住2D数组只是数组的数组。

至于MVC,这是我的意见:M是数据的模型(该阵列,例如),V是数据的可视化表示(显示给用户,作为一个棋盘也许)和C是控制器,它连接两个并发送一个到另一个的改变,翻译或以其他方式解释用户的动作是必要的。 如果用户将一个棋子从一个正方形拖动到另一个正方形,则控制器会解释此手势,执行逻辑来确定该操作是否合法及其可能产生的副作用(例如捕获一块棋子),并同时更新模型和根据需要查看。 混乱之处在于,大多数UI工具包(包括Java)经常模糊这些部分之间的边界,以使Controller的位最终出现在View或Model或两者中。 这不一定是一个问题,但需要注意。 主要的事情是尽可能地在数据,视图和连接两者的逻辑之间保持明确的边界。

要回答你关于绘画和统筹的问题,这真的取决于你如何实现你的棋盘UI。 例如,您可以完全使用Java Swing来实现它,并且通过巧妙地使用JLabel,JPanels以及GridLayout甚至JTable,您几乎(几乎可以!)拥有一个自动更新的棋盘。 另一方面,您可以从头开始实现自己的UI类,利用Java2D及其提供的绘图基元,然后必须对坐标等进行更多管理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM