【发布时间】:2011-11-01 22:36:44
【问题描述】:
如何组织 Java Swing 应用程序以实现 MVC 架构?
【问题讨论】:
-
另见answer。
-
该死,谷歌又倒闭了?但说真的,这个问题在很多地方都被问过很多次了。
标签: java model-view-controller swing
如何组织 Java Swing 应用程序以实现 MVC 架构?
【问题讨论】:
标签: java model-view-controller swing
【讨论】:
我会对我的课程进行分类:
【讨论】:
您的项目必须至少包含三个实体:您的model、您的view 和您的controller。您的模型代表您的数据,视图是您的数据的视图,控制器是创建这两个视图的东西和控制器。
假设您有一个矩形,并且想要构建一个 GUI,当用户键入矩形的边时显示矩形的区域。
您的模型必须扩展 Observable 类,这样您就可以在 MCV architecture 中将 Square 类标记为模型。
public class Square extends Observable {ecc....}
当你设置边时,你必须将模型的状态设置为已更改,并通知正在监听你的模型的观察者,例如:
public void setSide(double side) {
this.side=side;
setChanged();
notifyObservers();
}
PS:setChanged() 和 notifyObservers() 由 Observable 类提供。
现在第二步,你的 View 必须实现Observer 接口,所以你把它标记为监听模型的变化。实现 Observer 会强制你编写 update 方法。
public class Square_View implements Observer {
JLabel area;
......
@Overried
public void update (Observable o, Object arg1) {
Square square=(Square)o;
area.setText(square.getArea());
}
好吧,只要你的方格发生变化,就会触发通知并调用更新方法。
现在是controller,MVC 架构的思想:
public class MyProgram extends JFrame {
... somewhere in your class
Square s=new Square();
Square_View sv=new Square_View();
s.addObserver(sv);
}
正如我之前所说,您创建模型和视图并将视图注册为模型的观察者。
【讨论】: