我是新手,但设法创造了一个下降gui。
虽然我的问题是我无法应用参考文献/教程中提出的模式,主要是MVC模式。java swing vs mvc:这种模式的确有可能吗?
是我,还是在JTree和使用SwingWorker,它是不可能有一个清晰的控制器/视图/模型分离?
例如,我使用Swingworker,但后来我无法在设计中“装配”控制器。
I.e.该控件的动作基本上在内部的doBackground方法中,例如按钮的动作执行。
所以没有控制器类。
swing工作者的行为结果是更新一个Jtree,所以我将结果传递给一个名为model的类,但是这个类必须能够访问JFrame内部的Jtree的treeModel,即观点,所以没有明确的观点和模式分离。
我看了很多教程,但所有介绍MVC都有一个简单的例子,在大多数情况下,视图(只是一些标签!)更新了所有内容。我是否完全困惑,或者在使用swingworkers和jtrees的swing应用程序中整合MVC模式并不容易或至少容易?
我说的是实际的域数据,而不是在swing组件中实现的MVC。
有人可以帮助我(让我从这个可怕的头痛中得到帮助)或者概述了如何接近这个设计,或者至少带有一个教程,这对于一个非平凡的例子来说很有用吗?
感谢
我明白你在说什么。但是如果我创建一个控制器,在JTree的情况下创建一个模型,我将不得不保留一个行为产生的结果放在树中的位置的信息。控制器可以将动作的结果传递给我的自定义模型,并且模型可以将事件触发到更新可用的视图。但树怎么知道在哪里放置新节点(或更新现有节点)?我不想重绘整个JTree。只有必须改变的部分。但这意味着模型必须知道JTree结构。所以这不是一个干净的分离。对? – Cratylus 2010-09-13 19:27:57
当我使用JTree来表示某些东西时,我通常也将该信息作为树存储在后端。这意味着我可以传递几条信息 - 位置,深度等。或者,我可以使用后端的TreeModel作为模型的一部分,并让它自行触发事件。只要视图不是直接修改模型,我不会在那里看到一个巨大的问题。希望有助于澄清。 – aperkins 2010-09-13 19:50:02
@perkins:对不起,我在最后一部分失去了你。您在模型中存储例如JTree的DefaultMutableTreeModel,并使用模型中的方法(add,insertNodeInto等)更新它?在第一部分中,您使用什么结构将信息作为树存储在后端? – Cratylus 2010-09-13 20:00:54