java - 模型可以刷新 View 吗?

标签 java model-view-controller user-interface swt

我有一个使用 SWT 的 MVCish 设计。我有一个实现整个 GUI(按钮和 Action 监听器)的类,它有一个 Shop 对象,它有一个项目列表。有时,使用 RMI(学校分配),列表正在更新(如果杂志中有新内容,它会告诉服务器并且服务器将新列表传播到所有商店)并且这一切都很酷。问题是我不知道如何让 GUI 在不按下按钮的情况下重新绘制新列表。我想做的事:

1) 杂志里有新东西
2) 将新列表发送到服务器
3)服务器将列表发送给所有商店
4) 每个商店更新其列表
5) 每个商店都以某种方式告诉 GUI 重新绘制表示列表的 JTree。

我已经完成了第 1-4 点。是否有可能实现5)?我故意尝试将模型和 Controller 分开(因为我们必须制作一个终端和一个 GUI 界面)但现在我看到商店获得了新列表并且它甚至不知道 GUI 的存在(只是就像一个普通的 MVC)。
现在我有一个“刷新”按钮,它从 Shop 对象中获取列表并更新 JTree 模型,但根据我的老师告诉我的,他希望它是自动的。我可以通过在一个类中同时编写商店和图形用户界面来做到这一点,但这有点糟糕。

最佳答案

您可以让您的 View 成为模型的观察者,并以这种方式接收通知。或者您可以安排一个周期性任务来执行刷新操作。

从 UI 的角度来看,我不希望 View 自动更新——如果我正在向下钻取某些东西并且树突然被重置,我会很恼火。我认为显示诸如“目录更新可用,按‘刷新’以查看新项目”之类的消息(有点像 SO“新答案”消息)或可能只是突出显示刷新按钮(更改其背景颜色或其他内容)要友好得多).

关于java - 模型可以刷新 View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126948/

相关文章:

java - 您如何/在哪里搜索计算机/项目上已安装的 java 库?

java - 在不退出的情况下设置 Java 退出代码

objective-c - Trying to follow MVC - 寻求良好设计的建议

java - 我可以在java MVC模型中使用getter和setter吗

asp.net-mvc-3 - 返回 CSV 文件的 MVC 操作

java - Play Framework + tomcat

java - 为什么这个 If 语句返回 True?

java - SWT 部分 - 无法设置标题背景渐变

在不同屏幕分辨率下具有 MIG 布局的 Java 桌面应用程序

java - 二维数组列表 Java (Gui)