Ваш проект должен состоять как минимум из трех объектов: вашего 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);
}
Как я уже говорил, вы создаете модель и вид и регистрируете вид в качестве наблюдателя для вашей модели.