如何正确的Java Swing两种不同的MVC控制器之间的通信?(How to correctly

2019-09-17 22:57发布

你能解释我一个控制器可以如何调用一个简单的,但仍然是正确的方法的另一个控制器的方法?

请提供一些代码!

背景:我有2个不同的控制器 - 视图模型和2个图书馆,他们需要彼此之间进行通信:

  1. SettingsWindow / SettingsController / SettingsModel:负责应用程序的设置。 该模型是一个单身,因为我需要在整个应用程序的设置数据;

  2. 一种用于监控其创建一个事件每一个文件是在特定目录中创建时间目录库。 所监视的目录路径在SettingsModel定义; 我使用了Java 7 WatchService API;

  3. 一种用于监视网络服务器和下载新文件库。 Web服务器地址和保存目录都在SettingsModel定义; 我使用HttpsURLConnection的和一个定时器;

  4. 主窗口/ MainController / MainModel:负责主应用程序窗口,其中有一个必须每一个新的文件是在被监控目录中创建时间更新,还每次一个文件由上述库中下载的表格。

那么,如何正确地我和实例化沟通的4个不同的功能?
如何他们的控制器之间commnuicate,因为它们都涉及? 我应该如何在MVC方面组织这个项目?

请提供基本的MVC支架(骨架),并显示在我创建实例,在哪里以及如何我呼吁每个人的方法。 我是新来的Java,特别是摇摆和MVC。 我读了很多,但我被困在这种情况下。

Answer 1:

如所建议的在这里 ,图案,例如模型-视图-控制器观测代表重复的设计元素。 一个简单的轮廓可以示出的类的相互作用,但是一般溶液是超出的StackOverflow的范围。

不过,这可能是看的原则可能会如何应用非常有用。 假设你在下面的教程 ,并实施了WatchServiceSwingWorker ,如图所示这里 。 现在,假设你想要的主视图,一个JTable ,响应到达的自我更新WatchEvent 。 你会安排相应TableModel本身与工人作为一个注册PropertyChangeListener所示, 在这里和这里 。 当PropertyChangeEvent到来,您更新TableModel ,并触发相应的事件,以更新JTable 。 已知TableModel实现已经包含了所需的方法。

一种类似的方法将被用于响应于从web到达的数据来更新该表。

对于设置,考虑java.util.Preferences ,提到这里 ,或javax.jnlp.BasicService ,讨论在这里 。



文章来源: How to correctly communicate between two different MVC Controllers in Java Swing?