【问题标题】:Java Swing MVC architectureJava Swing MVC 架构
【发布时间】:2011-11-01 22:36:44
【问题描述】:

如何组织 Java Swing 应用程序以实现 MVC 架构?

【问题讨论】:

  • 另见answer
  • 该死,谷歌又倒闭了?但说真的,这个问题在很多地方都被问过很多次了。

标签: java model-view-controller swing


【解决方案1】:

【讨论】:

    【解决方案2】:

    我会对我的课程进行分类:

    • 对象类:表示对象
    • 功能类:提供功能。例如,读取/写入文件的方法或可能使用某些对象类进行计算的方法
    • 和 GUI 类(使用 Swing)将是用户将看到的。这些类将执行类提供的功能。

    【讨论】:

      【解决方案3】:

      您的项目必须至少包含三个实体:您的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);
      }
      

      正如我之前所说,您创建模型和视图并将视图注册为模型的观察者。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 2013-01-31
        • 2011-12-06
        • 1970-01-01
        相关资源
        最近更新 更多