Java Swing MVC архитектура - PullRequest
       0

Java Swing MVC архитектура

2 голосов
/ 02 ноября 2011

Как организовано приложение Java Swing для достижения архитектуры MVC?

Ответы [ 3 ]

6 голосов
/ 02 ноября 2011
2 голосов
/ 02 ноября 2011

я бы классифицировал мои классы:

  • классы объектов: для представления объектов
  • классы функциональных возможностей: для обеспечения функциональных возможностей.например, методы чтения / записи файлов или методы для выполнения вычислений, возможно, с использованием некоторых классов объектов
  • и классов GUI (с использованием Swing), которые будут видеть то, что увидит пользователь.эти классы будут делать то, что предоставляют классы функциональности.
0 голосов
/ 04 августа 2015

Ваш проект должен состоять как минимум из трех объектов: вашего model, вашего view и вашего controller. Ваша модель представляет ваши данные, представление - это представление ваших данных, а контроллер - то, что создает оба представления. и контроллер.

Предположим, у вас есть прямоугольник и вы хотите построить графический интерфейс, который показывает площадь прямоугольника, когда пользователь вводит его сторону.

Ваша модель должна расширять класс Observable, таким образом вы помечаете класс Square как модель в вашем MCV architecture.

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);
}

Как я уже говорил, вы создаете модель и вид и регистрируете вид в качестве наблюдателя для вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...